我有這個文本文件:http://henke.lbl.gov/tmp/xray6286.dat
其中我想列出能量和傳輸列。從文本文件中讀取沒有明確分隔符的列
不幸的是,它沒有明確的分隔符 - 單詞之間由一系列空格分隔。
運行像
with open('xray6286.dat', 'U') as data:
reader = csv.reader(data, delimiter=' ')
for line in reader:
print line
會導致類似的輸出:
['', 'Cu', 'Density=8.96', 'Thickness=100.', 'microns']
['', 'Photon', 'Energy', '(eV),', 'Transmission']
['', '', '', '', '5000.0', '', '', '', '', '', '0.52272E-07']
['', '', '', '', '5250.0', '', '', '', '', '', '0.42227E-06']
['', '', '', '', '5500.0', '', '', '', '', '', '0.24383E-05']
,我可以蠻力它給我我想要的值用下面的代碼:
import csv
energy = []
transmission = []
with open('xray6286.dat', 'U') as data:
reader = csv.reader(data, delimiter='\n')
for line in reader:
if reader.line_num > 2:
cleaned_line = []
for word in line[0].split(' '):
if word:
cleaned_line.append(word)
energy.append(cleaned_line[0])
transmission.append(cleaned_line[1])
但我想知道如果有人知道更多..很常見的方式來實現這一目標?
只要你能避免使用正則表達式,你應該這樣做,正則表達式計算起來很昂貴。 – alfasin
@alfasin好的,這是很好的知道。預編譯正則表達式有多少幫助? 'spaces = re.compile(r'\ s +'); spaces.split(線);'? – Ben
編譯並不耗時 - 它是重要的解析部分。 – alfasin