如何删除CSV中的所有标点符号,特殊字符并将数字替换为“数字”字符串?

时间:2019-07-12 19:36:36

标签: python csv

我正在从新的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}}

1 个答案:

答案 0 :(得分:0)

删除我的旧答案,我有点误解了您的要求。不确定用“ number”字符串替换数字是什么意思,但这将可从提取的文本列表中删除标点符号。

更改行

extracted = re.sub(r'[,.:@#?!&$]', ' ', extracted)

extracted = [re.sub([,.:@#?!&$], ' ', text) for text in extracted]

说明所做的更改:

由于re.sub不接受通过extracted中的字符串在每个字符串上调用re.sub的字符串进行列表循环,因此这是通过列表理解来完成的,我建议您检查它们是否对你来说是新的。然后,将“已清除”列表分配回extracted