Python从文本fi中拆分并查找特定字符串

2024-06-01 07:46:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.txt file格式的原始数据,希望将其转换为.csv file格式。你知道吗

这是来自txt fle的示例数据:

(L2-CR666 Reception Counter) L2-CR666 Reception Counter has been forced.
(L7-CR126 Handicapped Toilet) L7-CR126 Handicapped Toilet has been forced.

我希望取得以下成果:

L2-CR666 Reception Counter, forced
L7-CR126 Handicapped Toilet, forced

我尝试了以下代码,但未能达到所述的结果。我哪里出错了?你知道吗

import csv

with open('Converted Detection\\Testing 01\\2019-02-21.txt') as infile, open('Converted Detection\\Converted CSV\\log.csv', 'w') as outfile:
    for line in infile:
        outfile.write(infile.read().replace("(", ""))
        for line in infile:
            outfile.write(', '.join(infile.read().split(')')))
            outfile.close()

Tags: csvtxtcounterinfileoutfilefileconvertedl2
3条回答

你可以试试这个:

with open('Converted Detection\\Testing 01\\2019-02-21.txt') as infile, open('Converted Detection\\Converted CSV\\log.csv', 'w') as outfile:
    for line in infile:
        # Get text inside ()
        text = line[line.find("(")+1:line.find(")")]
        # Remove \r\n        
        line = line.rstrip("\r\n")
        # Get last word
        forcedText = line.split(" ")[len(line.split(" "))-1]
        # Remove . char
        forcedText = forcedText[:len(forcedText)-1]
        outfile.write(text+", "+forcedText+"\n")

    outfile.close()

最好的

第一个for循环是读取infle。不需要重读infle和第二个循环。 另外with块将负责关闭文件。你知道吗

for line in infile:
    line = line.replace("(", "")
    outfile.write(', '.join(line.split(')')))

您可以使用.partition()来截断之前的所有内容,然后简单地相应地替换不需要的部分。另外,当使用with语句时,您不必关闭文件,因为它会自动为您关闭文件,并且您不必导入csv库来保存扩展名为.csv的文件。你知道吗

以下代码输出您想要的结果:

infile_path = "Converted Detection\\Testing 01\\2019-02-21.txt"
outfile_path = "Converted Detection\\Converted CSV\\log.csv"

with open(infile_path, "r") as infile, open(outfile_path, "+w") as outfile:
    for line in infile:
        line = line.partition(")")[2].replace(" has been forced.", ", forced").strip()
        outfile.write(line + "\n")

相关问题 更多 >