首页 > 解决方案 > 连接两行或多行,而不会在最后一行出现重复

问题描述

如果它们不以 0000 开头,我想连接两行或多行,并将这些行放在以 00000 开头的行并添加 |。这是我正在使用的代码,它工作正常,但我得到了最后一行,一些值的重复,但只是最后一个。谁能帮我?

with open('TodasPGDAS.txt', 'r+', encoding="utf-8") as file:
    text = str();
    for line in file:
        if line[0:5] == "00000":
            text = text + '\n'
        text = text + '|' + line.strip()
    file.seek(0)
    file.write(text)

标签: pythonpython-3.x

解决方案


这是一个简单方便的重构,它使用fileinput模块的inplace模式来替换文件的内容。

import fileinput

for file in fileinput.input(['TodasPGDAS.txt'], inplace=True):
    accumulated = []
    for line in file:
        if line.startswith("00000") and accumulated:
            print('|'.join(accumulated))
            accumulated = []
        accumulated.append(line.strip())
    if accumulated:
        print('|'.join(accumulated))

这也将逻辑重构为仅在字段| 之间添加。我猜这就是你真正想要的;如果没有,也许您可​​以通过简单的示例输入和预期输出来澄清您的问题。

Python 3 中的默认编码在任何健全的平台上都应该是 UTF-8。


推荐阅读