排除python输出中的模式

问题描述 投票:0回答:2

我在python中抓取.txt文件,我正在使用正则表达式捕获票号和名称:

for line in Text:
    if re.match('Ticket:|Name:', line):
        print(line)

基于我的.txt文件,这是捕获正确的字段以及我的空白行(尚未填写):

Ticket:  123
Name:  Person123
Ticket:  124
Name:  Person124
Ticket:  
Name:  
Ticket:  
Name:
Ticket:  
Name:

如果我将\n附加到我的正则表达式它会打印我的空白行,但是有没有办法保持我的“填充”行并且还排除了他们换行的空白?

python regex
2个回答
2
投票

下面的代码将跳过空行,添加\ s +,匹配Unicode空白字符(包括[\t\n\r\f\v])一次或多次,然后添加\ w +,其中一个或多个匹配Unicode字符;这包括大多数可以成为任何语言单词的一部分的字符,以及数字和下划线。如果使用ASCII标志,则仅匹配[a-zA-Z0-9_]

for line in Text:
   if re.match('Ticket:\s+\w+|Name:\s+\w+', line):
        print(line)

输出:

Ticket:  123
Name:  Person123
Ticket:  124
Name:  Person124

0
投票

也许你可以使用rstrip并指定换行符\n

for line in Text:
    if re.match('Ticket:|Name:', line):
        print(line.rstrip('\n'))

Demo

© www.soinside.com 2019 - 2024. All rights reserved.