import csv import re # 打开CSV文件 with open('/Users/rachel_lrq/Desktop/浙江省海洋经济.csv', 'r', encoding='utf-8') as file: csv_reader = csv.reader(file) # 创建写入CSV文件的列表 cleaned_data = [] for row in csv_reader: # 对每一行的文本进行清洗 pattern = r':(.*)' cleaned_row = [re.search(pattern, text).group(1) if re.search(pattern, text) else '' for text in row] cleaned_data.append(cleaned_row) # 将清洗后的数据写入新的CSV文件 with open('/Users/rachel_lrq/Desktop/cleaned_data.csv', 'w', newline='', encoding='utf-8') as file: csv_writer = csv.writer(file) # 写入清洗后的数据 csv_writer.writerows(cleaned_data)
时间: 2024-04-12 19:26:50 浏览: 103
你的代码基本上是正确的,只是需要稍作修改。首先,你需要将正则表达式的模式 `r':(.*)'` 改为 `r'[^:]*:(.*)'`,这样可以确保匹配第一个冒号后的所有内容。此外,你还需要导入 `csv` 和 `re` 模块。
下面是修改后的代码:
```python
import csv
import re
# 打开CSV文件
with open('/Users/rachel_lrq/Desktop/浙江省海洋经济.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
# 创建写入CSV文件的列表
cleaned_data = []
for row in csv_reader:
# 对每一行的文本进行清洗
pattern = r'[^:]*:(.*)'
cleaned_row = [re.search(pattern, text).group(1) if re.search(pattern, text) else '' for text in row]
cleaned_data.append(cleaned_row)
# 将清洗后的数据写入新的CSV文件
with open('/Users/rachel_lrq/Desktop/cleaned_data.csv', 'w', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file)
# 写入清洗后的数据
csv_writer.writerows(cleaned_data)
```
在这个例子中,我假设你的原始CSV文件路径是 `/Users/rachel_lrq/Desktop/浙江省海洋经济.csv`,清洗后的数据将会写入 `/Users/rachel_lrq/Desktop/cleaned_data.csv`。你可以根据自己的实际情况修改文件路径。
阅读全文