python编写程序,在文件夹中生成饭店营业额模拟数据文件 data.csv。并使用datetime模块获得用户用餐时长;使用re模块获得字符串中的名字、电话。
时间: 2024-10-10 13:16:33 浏览: 98
在Python中,你可以通过以下步骤来创建一个名为"data.csv"的文件,模拟饭店营业额数据,并利用`datetime`模块获取用户用餐时间长度,以及使用`re`模块从字符串中提取名字和电话号码:
首先,你需要导入所需的模块:
```python
import csv
import random
from datetime import timedelta
import re
```
接下来,假设你有一个顾客信息列表,包含姓名(name)、电话(phone)、消费金额(amount),以及用餐开始时间(start_time):
```python
# 示例顾客信息
customers = [
{"name": "张三", "phone": "13800138000", "amount": 50, "start_time": "2023-04-01 12:00:00"},
# 添加更多顾客...
]
# 获取用餐时长函数
def get_meal_duration(start_time):
duration = timedelta(hours=random.randint(1, 3), minutes=random.randint(0, 60))
return start_time + duration
# 模拟数据生成函数
def generate_data():
with open("data.csv", "w", newline="", encoding="utf-8") as csvfile:
writer = csv.writer(csvfile)
header = ["Name", "Phone", "Amount", "Meal Duration"]
writer.writerow(header)
for customer in customers:
name = customer["name"]
phone = customer["phone"]
amount = customer["amount"]
meal_end_time = get_meal_duration(customer["start_time"])
# 将时间转换为字符串(为了写入CSV)
meal_start_time_str = customer["start_time"].strftime("%Y-%m-%d %H:%M:%S")
meal_end_time_str = meal_end_time.strftime("%Y-%m-%d %H:%M:%S")
# 写入CSV
row = [name, phone, amount, f"{meal_start_time_str} to {meal_end_time_str}"]
writer.writerow(row)
# 生成模拟数据
generate_data()
```
在这个例子中,我们首先创建了一个顾客列表,然后使用`get_meal_duration`函数随机生成用餐时长。`generate_data`函数会打开"data.csv"文件,写入表头,然后遍历每个顾客的信息,将它们写入到CSV文件中。
对于`re`模块的使用,这里并没有直接涉及,但如果需要从字符串中提取特定格式的名字和电话,你可以使用正则表达式。例如,如果你有电话号码的字符串格式是固定模式的,可以这样操作:
```python
def extract_phone(phone_string):
pattern = r"\d{11}" # 假设电话号码是11位数字
match = re.search(pattern, phone_string)
if match:
return match.group() # 返回匹配到的电话号码
else:
return None # 如果没有找到匹配,则返回None
# 调用extract_phone方法提取电话号码
customer["phone"] = extract_phone(customer["phone"])
```
请注意,实际应用中,你可能需要处理电话号码格式的变化,这里仅做示例用途。
阅读全文