我對Python很新。說我有一個(非常大)分隔文本這樣的文件中的數據:Python找到並用NA代替分隔文本文件
a|b|c|d|e
1|.|.|-|.
1.2|2.6|||1.7
由於文本文件是真的很大,我想讀它一行行寫。我想要替換.
,-
或空的字符串,NA
。這是我的嘗試:
import csv
f = open('sample1_fixed.txt','wb')
targets1, new1 = ['|.|','|-|','||','| |'], '|NA|'
for line in open('sample1.txt', 'rb'):
for target in targets1:
if target in line:
line = line.replace(target,new1)
for target in targets1:
if target in line:
line = line.replace(target,new1)
f.write(line + "\n")
f.close()
但我在想一定有更好的方法,使用分隔符?此解決方案也不會在行結束和開始處拾取實例。有更好的程序員的想法嗎?
預期輸出:
A | B | C | d |電子
1 | NA | NA | NA | NA
1.2 | 2.6 | NA | NA | 1.7
:import csv import re f=open('sample1_fixed.txt','wb') with open('sample1.txt','rb') as inputfile: read=csv.reader(inputfile, delimiter='|') for row in read: text = row[1] text = re.sub(r'^\.$','NA',text) text = re.sub(r'^-$','NA',text) f.write(text + '\n') f.close()
我也使用CSV模塊和正則表達式的嘗試
但這隻允許我一次寫一列,我不知道如何讓它們全部輸出...
上述輸入的預期輸出是什麼? – 2014-10-30 00:43:47
你看過內置的csv模塊嗎?您可以指定一個自定義分隔符。 – marklap 2014-10-30 00:53:05
一種方法是使用帶有自定義分隔符='|'的csv.reader以及用於replace_NAs()的輔助函數。我只是注意到你想要NA替換。 – smci 2014-10-30 02:03:37