从tex行的列表中查找字符串

2024-09-26 18:05:04 发布

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

我想从res list中得到那些包含字符串的行(其中至少有4行,o和o都可以代替零),以及名称。使用下面的脚本,我得到了没有名字的新行,只有当行有0和1时。你知道吗

我有一个文本文件,上面有几行名字和数字,如下所示:

txt文件中的行:

John Johns 1-1, 1-2
Adam Adams 1:0, 2:0
Dave Davis 1-0, 1:1
Jim Jims   1_0 1_1
Tim Tims 0 0 0 1
Tom Toms 2-0, 3:2
Pet Peters 1 0 1 1
Sam Sams 1.o 1.1
Ace Aces 10 11
Abe Abes 1O 11


res = ['1', '0', 'o', 'O', '1', '1']

with open('txt_file.txt') as oldfile, open('new_txt.txt', 'w') as newfile:
    for x in res:
        for line in oldfile:
            line_new = [x for x in res if (x in line)]
            line = ''.join(line_new)
            newfile.write(line)

新文件中应有行

Dave Davis 1-0, 1:1
Jim Jims   1_0 1_1
Pet Peters 1 0 1 1
Sam Sams 1.o 1.1
Ace Aces 10 11
Abe Abes 1O 11

Tags: 文件intxtnewforsamlineres
2条回答

不要使用模棱两可的列表,而是使用以下基于特定正则表达式模式的简明方法:

import re

with open('input.txt', 'r') as f_in, open('output.txt', 'w') as f_out:
    num_pat = re.compile(r'\b1[:.,_\s-]?[0oO],?\s+1[:.,_\s-]?1$')
    for line in f_in:
        if num_pat.search(line):
            f_out.write(line)

最后的output.txt内容:

Dave Davis 1-0, 1:1
Jim Jims   1_0 1_1
Pet Peters 1 0 1 1
Sam Sams 1.o 1.1
Ace Aces 10 11
Abe Abes 1O 11

我确信有些线程已经回答了这个问题,因为它基本上是列表到字符串的匹配。你知道吗

您已经可以检查这个:how-to-check-if-a-string-contains-an-element-from-a-list-in-python

或者这个:check-list-of-words-in-another-string

相关问题 更多 >

    热门问题