我必须使用像这样的文本文件:
<KeyPlat> = 1228.3
<KeyTran> = 690.3
<KeyTotal> = 1918.6
<KavPlat> = 2996.3
<KavTran> = 3811.4
<KavTotal> = 6807.7
我尝试使用此数据写入具有预期输出的新文本文件,如下所示:
Table 1
Platform 1228.3
Transfers 690.3
Table 2
Platform 1918.6
Transfers 2996.3
Total 6807.7
我试图将数字拉出并存储它们以写入新文件。我使用的方法是搜索关键字符,当我开始拉数字时。我不确定从这一点开始去哪里。
def foo():
# Open write and read files.
f1 = open('text.txt', 'r')
f2 = open('to.txt', 'w')
f2.write("Table 1"\n)
f2.write("Platform\t")
#Start of digit information
searchquery = '='
#End of digits
searchquery2 = '<'
for line in f1:
for letter in line:
if letter is not isdigit():
if letter == searchquery:
if letter == searchquery2:
答案 0 :(得分:2)
这是一项基本的改造任务,通过TXR为快速治疗量身定制。我只是复制并粘贴了样本数据并输出到xform.txr
,然后添加了指令和变量:
$ txr xform.txr data Table 1 Platform 1228.3 Transfers 690.3 Total 1918.6 Table 2 Platform 2996.3 Transfers 3811.4 Total 6807.7
xform.txr
中的代码:
@(collect)
<@{prefix}Plat> = @plat
<@{prefix}Tran> = @tran
<@{prefix}Total> = @tot
@(end)
@(output)
@ (repeat :counter (table 1))
Table @table
Platform @plat
Transfers @tran
Total @tot
@ (end)
@(end)
答案 1 :(得分:1)
我建议不要逐个字符地检查,而是建议在线上使用关键字in
。然后,您可以使用split
轻松生成空格之间的单词列表,例如["<KeyPlat>", "=", "1228.3"]
将成为"<KeyPlat> = 1228.3".split(' ')
的结果。然后你只需要像你喜欢的那样格式化你的输出。我更喜欢.format notation。
我使用lines
作为捷径。您应该使用您的文件。
lines = ["<KeyPlat> = 1228.3", "<KeyTran> = 690.3", "<KeyTotal> = 1918.6"]
f1 = open("testtable.txt", "w")
for line in lines:
values = line.split(' ')
if "KeyPlat" in values[0]:
print("{0:10s}{1:10s}".format("Platform", values[2]), file=f1)
elif "KeyTran" in values[0]:
print("{0:10s}{1:10s}".format("Transfers", values[2]), file=f1)
elif "KeyTotal" in values[0]:
print("{0:10s}{1:10s}".format("Total", values[2]), file=f1)
f1.close()
输出:
Platform 1228.3
Transfer 690.3
Total 1918.6