我有一堆 CSV 文件。在其中一些中,缺失的数据由空单元格表示,但在另一些中,有一个句点。我想遍历所有文件,打开它们,删除单独出现的任何句点,然后保存并关闭文件。
我已经阅读了很多关于使用 re.sub() 进行全词搜索的其他问题。这就是我想要做的(删除 . 当它单独出现而不是 3.5 中的 . 时),但我无法为整个单词是特殊字符('. ')。另外,我担心在整个单词也可以通过制表符和换行符区分的情况下,这些答案可能会有所不同。也就是说, /b 是否适用于我的 CSV 文件案例?
更新:这是我在看到下面的帮助后写的一个函数。也许它对其他人有用。
import csv, re
def clean(infile, outfile, chars):
'''
Open a file, remove all specified special characters used to represent missing data, and save.\n\n
infile:\tAn input file path\n
outfile:\tAn output file path\n
chars:\tA list of strings representing missing values to get rid of
'''
in_temp = open(infile)
out_temp = open(outfile, 'wb')
csvin = csv.reader(in_temp)
csvout = csv.writer(out_temp)
for row in csvin:
row = re.split('\t', row[0])
for colno, col in enumerate(row):
for char in chars:
if col.strip() == char:
row[colno] = ''
csvout.writerow(row)
in_temp.close()
out_temp.close()