我正在以新的 CSV 输出 2 列中的数据。我在用“数字”字符串替换列中的数字并删除所有标点符号和特殊字符时遇到困难。尝试过string.punctuation
,对我帮助不大,或者至少我没有很好地使用它......
这是我的代码,直到现在:
编辑:
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 = []
删除了我的旧答案,我有点误解了你在问什么。不确定用“数字”字符串替换数字是什么意思,但这将有助于从提取的文本列表中删除标点符号。
换线
extracted = re.sub(r'[,.:@#?!&$]', ' ', extracted)
至
extracted = [re.sub([,.:@#?!&$], ' ', text) for text in extracted]
解释该更改的作用:
由于re.sub
在extracted
调用re.sub
每个字符串时不接受通过字符串的列表循环,这是通过列表理解完成的,我建议您查看它们是否对您来说是新的。然后将“清理过的”列表分配回extracted
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句