我正在从新的CSV中的2列输出数据。在用“数字”字符串替换列中的数字并删除所有标点符号和特殊字符时,我遇到了困难。尝试过import csv
import re
cols = [0, 7] # column index numbers to be extracted
extracted = []
with open('data.csv', newline='') as csvfin:
csvReader = csv.reader(csvfin, delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
with open('output.csv', 'a', newline='') as csvfout:
csvWriter = csv.writer(csvfout, delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
for row in csvReader:
for col_num in cols:
extracted.append(row[col_num].lower())
extracted = re.sub(r'[,.:@#?!&$]', ' ', extracted)
extracted = [re.sub('\d+', 'number', change) for change in extracted]
csvWriter.writerow(extracted)
extracted = []
,并没有帮助我很多,或者至少我没有很好地使用它...
这是我到目前为止的代码:
编辑:
{{1}}
答案 0 :(得分:0)
删除我的旧答案,我有点误解了您的要求。不确定用“ number”字符串替换数字是什么意思,但这将可从提取的文本列表中删除标点符号。
更改行
extracted = re.sub(r'[,.:@#?!&$]', ' ', extracted)
到
extracted = [re.sub([,.:@#?!&$], ' ', text) for text in extracted]
说明所做的更改:
由于re.sub
不接受通过extracted
中的字符串在每个字符串上调用re.sub
的字符串进行列表循环,因此这是通过列表理解来完成的,我建议您检查它们是否对你来说是新的。然后,将“已清除”列表分配回extracted
。