我有一組帶有;
分隔符的.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所以不能確定你的意思是直接的方法。 –