在python输出中排除模式

时间:2018-09-17 17:31:36

标签: python regex

我正在使用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,它将打印我的空白行,但是有没有办法保持我的“已填写”行并通过换行符排除空白?

2 个答案:

答案 0 :(得分:2)

以下代码将通过添加一次或多次匹配Unicode空白字符(包括[\t\n\r\f\v] \ s + 来跳过空行,然后添加 \ 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

答案 1 :(得分:0)

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

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

Demo