用于在python中循环时匹配字母表、数字和特殊特许权的正则表达式

用于在python中循环时匹配字母表、数字和特殊特许权的正则表达式,python,regex,Python,Regex,我正试图找到文字和打印使用下面的代码。一切都很完美,但唯一的问题是我无法打印最后一个字(即数字) 我正在使用的文本文件: textfile = """1, REBECCA M. ROTH , COLLECTOR OF TAXES of the taxing district of the township of MORRIS for Six Hundred Sixty Seven dollars andFifty Two cents, the land in sai

我正试图找到文字和打印使用下面的代码。一切都很完美,但唯一的问题是我无法打印最后一个字(即数字)

我正在使用的文本文件:

textfile = """1, REBECCA M. ROTH , COLLECTOR OF TAXES of the taxing district of the
township of MORRIS for Six Hundred Sixty Seven dollars andFifty Two cents, the land
in said taxing district described as Block No. 10303 Lot No. 10 :
and known as 239 E HANOVER AVE , on the tax Taxes For: 2012
Sewer

Assessments For Improvements

Total Cost of Sale 35.00
Total
Premium (if any) Paid 1,400.00 """
我想知道我在哪里犯了错误。 欢迎提出任何建议。

两个问题:

  • 您当前的
    'Premium(如果有)Paid'
    字符串以空格结尾,并且
    '{}([^]*)'
    后面还有一个空格,将它们相加。删除
    “已支付保险费(如有)”中的尾随空格
  • 需要对括号进行转义,因此如果希望保持正则表达式不变,列表中的字符串应为
    ['Premium\(如果有的话)\)Paid']
    。您也可以改用
    re.escape
  • 对于您的特殊情况,这似乎是一个最佳解决方案:

    words = ['Town of','Block No.','Lot No.','Premium (if any) Paid']
    
    import re
    for i in words:
        y = re.findall('{}\s+([\S]*)'.format(re.escape(i)), text, re.I)
        print(y)
    
    有几个问题:

  • 正如其他人提到的,您需要转义特殊字符,如括号
    和点
    。非常简单,您可以使用
  • 另一个问题是付费的
    Premium\(如果有的话)
    中的尾随空格(它试图匹配两个空格,而不是一个,因为您还在正则表达式
    {}([^]*)
    中检查空格)
  • 您应该改为将代码更改为以下内容:


    你能简单介绍一下你想用正则表达式为每个单词匹配什么吗(这样我们就可以帮助你了解你想用正则表达式做什么)?@MaheshAnakali这是一个words-in-words变量中的单词列表。你可以查看上面的代码,我试过了,但是没有用。最后一个字没有出现。你点击链接看到tio上运行的代码了吗?输出部分包含1400I尝试转义括号,但不起作用。我找到了使用.replace删除括号的简单方法。但是问题还没有解决,是不是你已经删除了列表中“付费”后的空格?你能评论一下你在这里得到的输出吗?这里有一个[链接][用于我正在使用的原始文本文件,我得到的输出是这样的:[['30708']['15']['']好吧,在这种情况下,“溢价(如果有的话)已支付”在所有大写字母中。因此添加
    re.I
    标志。此外,短语后面有多个空格,因此您需要相应地更改正则表达式。在我的答案中添加工作代码以满足您的需要。
    words = ['Town of','Block No.','Lot No.','Premium (if any) Paid']
    
    import re
    for i in words:
        y = re.findall('{}\s+([\S]*)'.format(re.escape(i)), text, re.I)
        print(y)
    
    words = ['Town of','Block No.','Lot No.','Premium (if any) Paid']
    
    import re
    for i in words:
        y = re.findall('{} ([^ ]*)'.format(re.escape(i)), textfile)
        print(y)