为什么我在 RegEx 中找不到这个字符串?

Why can't I find this string in RegEx?

lines = []
total_check = 0

with pdfplumber.open(file) as pdf:
    pages = pdf.pages
    for page in pdf.pages:
        text = page.extract_text()
        for line in text.split('\n'):
            print(line)

输出数据:

Totaalbedrag excl. btw € 25,00

当我尝试从数据中检索增值税时:

KVK_re = re.compile(r'(excl. btw .+)')
KVK_re.search(data).group(0)

输出:AttributeError:'NoneType'对象没有属性'group'

KVK_re = re.compile(r'(excl. btw .+)')
KVK_re.search(r'excl. btw € 25,00').group(0)

输出:'excl. btw € 25,00'

当我在搜索中粘贴文字输出时,它怎么会找到 € 25,00 这个数字,而当我输入数据变量时却找不到?

请帮帮我!

您没有提供 data 对象的内容,但错误消息只是说找不到正则表达式。因此,您可能正在对不包含该特定字符串的数据调用搜索。

$ KVK_re = re.compile(r'(excl. btw .+)')
$ KVK_re.search('test').group(0)
AttributeError: 'NoneType' object has no attribute 'group'

在大多数情况下,当在模式中使用文字 space 并且没有匹配项时,原因是不可见字符,或 non-breaking spaces.

当你有 non-breaking spaces,\xA0,你可以简单地用 \s 替换文字 spaces 来匹配任何白色 space 或 [ \xA0] 以匹配 space 中的任何一个。

在这种情况下,似乎可能存在 space 和一些不可见字符的组合,因此,您可以使用 \W 来匹配任何 non-word 个字符,而不是一个文字 space:

r'excl\.\W+btw\W.+'