csv文件每一行第一列的前缀是否数字+名字,需要忽略数字,根据名字将这行的内容分别写入不同的csv表格
时间: 2024-03-20 16:41:35 浏览: 134
csv文件中,解决数字列转换成文本列
3星 · 编辑精心推荐
你可以使用 Python 中的 `csv` 模块和正则表达式来实现该功能。具体步骤如下:
1. 使用 `csv` 模块打开原始文件,并创建多个输出文件。
```python
import csv
import re
with open('input.csv', 'r') as infile:
reader = csv.reader(infile)
headers = next(reader) # 读取头部信息
outputs = {} # 创建输出文件字典
for row in reader:
# 使用正则表达式提取名字
name = re.sub(r'^\d+', '', row[0]).strip()
# 如果该名字对应的输出文件不存在,则创建一个
if name not in outputs:
outputs[name] = csv.writer(open(f'{name}.csv', 'w', newline=''))
outputs[name].writerow(headers) # 写入头部信息
```
2. 遍历每一行数据,根据名字将该行数据写入对应的输出文件。
```python
with open('input.csv', 'r') as infile:
reader = csv.reader(infile)
next(reader) # 跳过头部信息
for row in reader:
name = re.sub(r'^\d+', '', row[0]).strip()
outputs[name].writerow(row) # 写入数据
```
完整代码示例:
```python
import csv
import re
with open('input.csv', 'r') as infile:
reader = csv.reader(infile)
headers = next(reader) # 读取头部信息
outputs = {} # 创建输出文件字典
for row in reader:
# 使用正则表达式提取名字
name = re.sub(r'^\d+', '', row[0]).strip()
# 如果该名字对应的输出文件不存在,则创建一个
if name not in outputs:
outputs[name] = csv.writer(open(f'{name}.csv', 'w', newline=''))
outputs[name].writerow(headers) # 写入头部信息
with open('input.csv', 'r') as infile:
reader = csv.reader(infile)
next(reader) # 跳过头部信息
for row in reader:
name = re.sub(r'^\d+', '', row[0]).strip()
outputs[name].writerow(row) # 写入数据
```
其中,`input.csv` 是原始文件名,你需要将其替换为你实际使用的文件名。
阅读全文