【问题标题】:Remove commas and following text on a huge .txt file删除巨大 .txt 文件中的逗号和以下文本
【发布时间】:2021-08-04 15:56:13
【问题描述】:

我需要一些帮助来解决这个问题。 我有一个巨大的单词列表作为一个 .txt 文件,几乎有 100k 行。

问题是,有些行后面有逗号和一些文字,就像这样

hi, ho
i
am, em
yellow

我需要删除所有包含它们的行的逗号,以及逗号后面的文本以获得这种格式:

hi
i
am
yellow

【问题讨论】:

  • 我没有downvote your question because no attempt was made,因为您是新贡献者,但通常我们希望您提供honest attempt at the solution,然后然后提出具体问题关于你的实施。
  • 我不知道如何解决这个问题,我在谷歌上研究了很多,但我似乎找不到解决这个问题的工具,这就是我在这里问的原因:s 顺便说一句,我是不是要一段代码,而是要一个关于我需要使用什么工具来解决这个问题的实际建议或建议
  • 你在Python中成功加载txt文件了吗?
  • 谷歌搜索现有答案不是你应该做的那种“研究”,而是听起来像是学习语言的基础。任何体面的 Python 教程都会解释如何打开然后读取或写入文件,以及如何从字符串中查找和/或删除字符。 Stackoverflow 无意取代现有的教程或文档。
  • 我明白了,下次我会花更多时间做研究。

标签: python text formatting comma txt


【解决方案1】:

试试这个

import fileinput
filename='abc.txt'
with open(filename, 'r') as f:
    readl=f.readlines()

with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
    for line in readl:
        if ',' in line:
             print(line.replace(line.strip('\n'), line.strip('\n').split(',')[0]), end='')

【讨论】:

    【解决方案2】:

    这应该可以解决问题:

    out = open("out.txt", "w")
    with open("file.txt", encoding="utf-8") as f:
        for line in f.readlines():
            idx = line.find(",") 
            index = idx if idx != -1 else len(line)
            out.write(line[0:idx]+"\n")
    out.close()
    

    它从名为file.txt 的文件中读取行并将格式化版本保存到名为out.txt 的文件中 输入:

    hi, ho
    i
    am, em
    yellow
    ,
    hey, ge
    gibberish, he
    años, luz detrás
    

    输出:

    hi
    i
    am
    yellow
    
    hey
    gibberish
    años
    

    【讨论】:

    • 感谢您的解释,但是当我运行代码时,我收到此错误消息Traceback (most recent call last): File "c:\Users\Buca\Desktop\Palabras\concat.py", line 3, in <module> for line in f.readlines(): File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1465: character maps to <undefined> PS C:\Users\Buca\Desktop\Palabras>
    • 我认为这可能与列表的语言有关?上面有西班牙语单词,像“ñ”这样的字符可能会导致问题?
    • 您可能遇到编码问题。你在那个txt文件里有什么样的数据?
    • 西班牙语单词,我将尝试将'ñ'替换为'n',看看问题是否仍然存在
    • 尝试用 utf-8 来做。当我用上面给定的西班牙语短语尝试它时,它起作用了。 (我希望是西班牙语,idk)
    【解决方案3】:

    只要不是用于 Python 中的更大项目,我就可以在 PowerShell 中超级快速地执行此类操作。

    我刚刚测试了我刚刚在您提供的示例上编写的快速脚本。

    $txtfile = get-content C:\YourPath\YourFile.txt
    $txtfile[0]
    $myarray =@()
    foreach ($line in $txtfile){
        $newline = [string]$line.Trim()
        $final = $newline -split ",", 2 | select -First 1
        $myarray += $final
    }
    
    $myarray | out-file C:\YourPath\OutFile.txt
    

    【讨论】:

    • 如果 OP 在 Linux 或 Mac 上会怎样
    • 公平。好吧,我认为其他人对 Python 有很好的答案。但如果他在窗户上,这可能是一个简单的解决方案。 Tbh 没有看到这个标签,所以他以为他只是在找人来做这件事。
    • 感谢 Muhteva,我已经解决了这个问题,但也感谢您发布您的答案!真的很感激:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2018-04-01
    • 1970-01-01
    • 2021-02-23
    • 2014-06-26
    相关资源
    最近更新 更多