【问题标题】:Formatting files to be written格式化要写入的文件
【发布时间】:2014-04-02 16:08:27
【问题描述】:

您好,请问我怎样才能遍历文本文件,在该行的最后一个索引处识别带有 0 的行,并在检索未删除的行时删除这些行。然后还将输出格式化为元组。

input.txt = 1 2 0 
            1 3 0 
            11 4 0.058529
            ...
            ...
            ...
            97 7 0.0789

所需的输出应如下所示

[(11,4,{'volume': 0.058529})]

谢谢

【问题讨论】:

  • 你试过了吗?可能是正则表达式?
  • 我会使用csv module 读取输入,切片[:-1][-1] 来分割最后一个值,并使用string format 来创建输出。

标签: python file python-2.7 file-io inplace-editing


【解决方案1】:

inplace=1 传递给fileinput.input() 以修改文件。循环内打印的所有内容都会写入文件:

import fileinput

results = []
for line in fileinput.input('input.txt', inplace=1):
    data = line.split()
    if data[-1].strip() == '0':
        print line.strip()
    else:
        results.append(tuple(map(int, data[:-1])) + ({'volume': float(data[-1])}, ))

print results

如果input.txt 包含:

1 2 0
1 3 0
11 4 0.058529
97 7 0.0789

代码将打印:

[(11, 4, {'volume': 0.058529}), 
 (97, 7, {'volume': 0.0789})]

input.txt的内容变成:

1 2 0
1 3 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多