【问题标题】:Delete specific parts in a txt file删除txt文件中的特定部分
【发布时间】:2022-11-22 21:19:10
【问题描述】:

我正在处理一个 txt 文件,在我需要的数据之间还有我想删除的信息。例如,txt 文件是这样构建的:

|important|data|that|I|need|to|keep|
-------------------------------
---------------
----------------
info|I|dont|need|
----------------
---------------
------------------------------
|important|data|that|I|need|to|keep
|I|want|to|keep|this|info|
-------------------------------
---------------
----------------
info|I|dont|need|
----------------
---------------
------------------------------

如何删除破折号之间的所有内容?

当我阅读文件时,我想要这样的东西:

|important|data|that|I|need|to|keep|
|important|data|that|I|need|to|keep
|I|want|to|keep|this|info|

更新:是否可以只删除破折号之间的所有内容?它们之间的信息格式可能不同,所以我想找到一个适合所有人的解决方案

【问题讨论】:

  • 看起来您要保留的所有行都以 | 字符开头,而您要删除的所有行都不是。那正确吗?如果是这样,您可以遍历这些行,并通过检查 startswith 字符串函数将所有以 | 开头的行输出到一个新文件。

标签: python split txt


【解决方案1】:

阅读每一行以列出并相应地应用理解如下

with open('file.txt') as f:
    lines = [line.rstrip('
') for line in f]


B = ['important','want']

mask = [word for word in lines if any(want in word for want in B)]
mask = [w.replace('-', '') for w in mask]
mask ='
'.join(mask)
print(mask)

输出 #

|important|data|that|I|need|to|keep|
|important|data|that|I|need|to|keep
|I|want|to|keep|this|info|

【讨论】:

    【解决方案2】:

    输入 str 附带一个功能 startswith 来检查字符串是否以特定的用户定义字符开头。更多信息可以参考以下documentation - python startswith

    with open("<file_name>.txt", "r") as f:
        for line in f:
            if line.startswith("|"):
                print(line)
    

    结果:

    |important|data|that|I|need|to|keep|
    
    |important|data|that|I|need|to|keep
    
    |I|want|to|keep|this|info|
    

    【讨论】:

    • info|I|dont|need| 行呢?
    • 感谢@S.B 的建议,我已经更新了答案。
    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多