我有一组带有;
分隔符的.csv文件。我需要用空白替换数据中的某些垃圾值。样本问题行:使用Python查找和替换问题
103273;CAN D MAT;B.C.;B.C.;B.C.;03-Apr-2006
所需的行之后查找和替换是:
103273;CAN D MAT;;;;03-Apr-2006
在我与;;
,我不能没有更换;B.C.;
上面的例子只需要B.C.
,因为我需要匹配此特定错误情况下的整个单元格值。我使用的代码是:
import os, fnmatch
def findReplace(directory, filePattern):
for path, dirs, files in os.walk(os.path.abspath(directory)):
for filename in fnmatch.filter(files, filePattern):
filepath = os.path.join(path, filename)
with open(filepath) as f:
s = f.read()
for [find, replace] in zip([';#DIV/0!;',';B.C.;'],[';;',';;']
s = s.replace(find, replace)
with open(filepath, "w") as f:
f.write(s)
findReplace(*Path*, "*.csv")
说我不是得到的输出是:
103273;CAN D MAT;;B.C.;;03-Apr-2006
可有人请这个问题的帮助?
在此先感谢!
所以基本上你想用''(空字符串)替换'#DIV/0!'和'B.C.'。为什么不这样做呢?用直接的方法。 – nutmeg64
发布的程序将给出''103273; CAN D MAT ;;;;;;;; 03-Apr-2006''作为示例输入,这与您写的内容不同。 – janos
@nutmeg:我也有短语B.C. (作为单元格中字符串的一部分)。我只想替换整个单元格值与此匹配的位置。而且,这两个值只是代表性的。我还有大约20个其他的值,比如“January”和“January”。 另外,我是新来的python所以不能确定你的意思是直接的方法。 –