将第二列单词与其他文本fi进行比较

2024-10-06 07:43:28 发布

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

我只想显示第二列

这是我的密码

with open('try.txt', 'rb') as file1:
    file1_data = dict(line.split(None, 2)[1] for line in file1 if line.strip())
print file1_data

这是文本文件

^{pr2}$

我必须在第二个文本文件的textfile1的第二列找到Bat Secondtextfile

?Bat03|Batsman
This is the goods of cricket
Usually cricketers use it
it is game
?Balt|Bowler
Both can be use by batsman and bowler
?Bat133|Swimmer
Swiming is the best exercise

因此,在textfile1的第二列中的Bat,我们转到second text file,找到Bat03和Bat133,忽略{}之后的值,如果在|之前的第二个文本文件中找到Bat,则显示它

with open('second.txt', 'rb') as file2, open('output.txt', 'wb') as outputfile:
    output = csv.writer(outputfile, delimiter='|')
    for line in file2:
        if line[:1] == '?':
            row = line.strip().split('|')
            key = row[0][1:]
            if key in file1_data:
                output.writerow(row + [file1_data])
        else:
            outputfile.write(line)

所需输出

?Bat03|Batsman
        This is the goods of cricket
        This is the goods of cricket
        Usually cricketers use it
        it is game
?Bat133|Swimmer
        Swiming is the best exercise

Tags: theintxtdataifisasline
1条回答
网友
1楼 · 发布于 2024-10-06 07:43:28

你有两个不同的问题。第一个是标题中的一个——如何只获得第二列的值。在

检索第二列的值

您的line.split(None, 2)[1:]同时返回行中的第二项和第三项的原因是它被告知要这样做。在末尾使用[1:]意味着返回列表中的第二项和所有后续项(因为:和{a1})。如果只想返回列表中的第二项,请使用line.split(None, 2)[1]。在

测试另一个文件中的行

第二个问题是如何使用第一个文件中的值来测试第二个文件中的值。您当前的代码似乎在大部分情况下都能做到这一点,但是您没有任何代码来捕获所谓的“描述”行。另外,我们还不清楚为什么我们应该使用csv.writer来创建一个看起来不是.csv格式的文件。在

with open('second.txt', 'rb') as file2, open('output.txt', 'wb') as outputfile:
    output = ""
    file2lines = file2.readlines()
    for i in range(len(file2lines)):
        line = file2lines[i]
        if line[0] == '?':
            row = line.strip().split('|')
            key = row[0][1:]
            if key in file1_data:
                output += line + "\t" + file2lines[i+1]
    outputfile.write(output)

相关问题 更多 >