【问题标题】:How to marge current line with previous line in txt file based on some condition in python?如何根据python中的某些条件将当前行与txt文件中的前一行合并?
【发布时间】:2021-10-07 12:21:03
【问题描述】:

我的输入文本文件是:

我预期的输出文本文件是:

这里我们需要根据python中第4行不以“[”开头的条件合并第3行和第4行

【问题讨论】:

  • 您可能应该包含一些可重现的数据,以便其他用户更容易帮助您并为您提供有效的答案。您是否已经尝试过任何代码?

标签: python text python-re


【解决方案1】:

遍历行,将上一行保存在变量中。

如果当前行不以[ 开头,请将其添加到上一行。

否则将上一行保存到文件并更新它。

【讨论】:

    【解决方案2】:

    您可以尝试以下方法:

    lines = []
    
    with open("file_in.txt") as f_in:
        for line in f_in:
            if line.startswith("["):
                lines.append(line)
            else:
                lines[-1] += line  # append to last line
    
    with open("file_out.txt", "w") as f_out:
         f_out.writelines(lines)
    

    【讨论】:

    • 感谢您的回复。但问题并没有解决。我的“file_in.txt”和“file_out.txt”一样
    • 应该没问题。只需在两种情况下使用相同的文件名即可。
    • 我认为问题出在“\n”
    • 尝试用lines[-1][:-1] += line 替换lines[-1] += line 如果可行,我将编辑答案
    【解决方案3】:

    如上所述,每行末尾的 \n 保持文件相同。在合并行之前应删除“\n”。这应该可以解决问题。

    lines = []
    
    with open("file_in.txt") as f_in:
        for line in f_in:
            if line.startswith("["):
                lines.append(line)
            else:
                lines[-1] = lines[-1][:-1]
                lines[-1] += line  # append to last line
    
    with open("file_out.txt", "w") as f_out:
         f_out.writelines(lines)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2022-01-23
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      相关资源
      最近更新 更多