只打印一次带有此子字符串的行

2024-05-08 03:32:52 发布

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

我有个问题。我有一个有很多字符串的文本文件。 我只想搜索那些有我的子串的。 但它给了我所有可能的匹配。 我的代码是:

name = 'ok'
with open('C:/Users/Desktop/text.txt','r') as fin:
        for line in fin:
            if name in line:
                print line

它打印:

ok1.0 = 259
ok1.1 = 259
ok1.2 = 259
ok2.0 = 260
ok2.1 = 260
ok2.2 = 260
ok3.0 = 261
ok3.1 = 261
ok3.2 = 261

很好-它找到了所有需要的线路。但我不需要在结尾有三行相同的数字。怎样才能只得到在行尾有唯一数字的行?我该怎么做才能得到这样的输出?你知道吗

ok1.0 = 259
ok2.0 = 260
ok3.0 = 261

我无法搜索像ok[0-9]这样的正则表达式。0<;-这是不允许的。我必须找到只有行与唯一的数字在最后像上面。 谢谢


Tags: 字符串代码textnameinwithlineok
1条回答
网友
1楼 · 发布于 2024-05-08 03:32:52

您应该以某种方式使用所见值(数字)的^{}来筛选出未来的实例。假设您的文件已排序,并且每行的格式为tag = value

name = 'ok'
seen = set()
with open('C:/Users/Desktop/text.txt','r') as fin:
    for line in fin:
        # Split stripped line to a tag and a value
        tag, value = line.strip().split(' = ', 1)
        if name in tag and value not in seen:
            seen.add(value)
            print line

将只打印第一个匹配行。你知道吗

相关问题 更多 >