我有一个文本文件,其中包含一些标题行和一些列(数字)。 我想读取此文件跳过标题,然后选择一些列和 使用Python脚本将它们写入新文件中。
例如,我们可以调用in_table.txt
下方的数据。
我想跳过标题(也是空行),
然后选择第一列和第四列(仅限数值)
并将它们保存在没有标题的新文件out_table.txt
中,只保存数字。
我怎么能用Python脚本呢?
in_table.txt:
hline1 hline1 hline1
hline2 hline2 hline2
hline3 hline3 hline3
par1 par2 par3 par4 par5
1. 10. 100. 1000. 10000.
2. 20. 200. 2000. 20000.
3. 30. 300. 3000. 30000.
4. 40. 400. 4000. 40000.
5. 50. 500. 5000. 50000.
答案 0 :(得分:2)
如果您坚持使用空格分隔符,请使用
with open('in_table.txt') as f:
# Iterate through the file until the table starts
for line in f:
if line.startswith('------'):
break
# Read the rest of the data, using spaces to split.
data = [r.split() for r in f]
with open('out_file.csv', 'w') as of:
for r in data:
# Write only column 0 and 2 (re: 0-indexing)
of.write('%s, %s\n'%(r[0], r[2]))
<强> CSV 强>
如果您使用逗号分隔,则可能是内置csv
库中的pythons
import csv
with open('in_table.txt') as f:
for line in f:
if line.startswith('------'):
break
data = [r for r in csv.reader(f)]
with open('out_file.csv', 'w') as of:
for r in data:
of.write('%s, %s\n'%(r[0], r[2]))
或者更简洁
import csv
with open('in_table.txt') as f:
for line in f:
if line.startswith('------'):
break
data = [r[0]+r[2] for r in csv.reader(f)]
wrt = csv.writer(open('out_file.csv', 'w'))
wrt.writerows(data)