当正则表达式将数字读取为字符串类型时,如何找到模式?

How can I find pattern when Regex reads digits as string type?

我正在尝试编写 pdf reader 脚本。当我在 RE 中编写模式时,它 return 什么都没有。

输入:

import requests
import pdfplumber
import pandas as pd
import re

with pdfplumber.open("file.pdf") as pdf:
    page = pdf.pages[0]
    text = page.extract_text()

decl = re.compile(r'\d{8}AN\d{6}')

for line in text.split('\n'):
    if decl.search(line):
        print(line)

从 pdf 文件中搜索的文本行是 'CHEMISCHE FABRIK BUDENHEIM KG PO BOX 61245366AN206589'

但它没有return所需的输出:61245366AN206589

我发现它将整行读取为字符串。我该如何解决这个问题?

for char in text.split('\n')[3]:
    print(char)
    print(type(char))

。 . . X

6个 1个 2个 4个 5个 3个 6个 6个 一个 2个 0 6个 5个 8个 9

search returns 一个匹配对象,所以如果有匹配,你需要从中提取结果。

这是在互动环节:

>>> decl = re.compile(r"\d{8}AN\d{6}")
>>> m = decl.search("CHEMISCHE FABRIK BUDENHEIM KG PO BOX 61245366AN206589")
>>> m
<re.Match object; span=(37, 53), match='61245366AN206589'>
>>> m.group(0)
'61245366AN206589'
>>> m.span()
(37, 53)

span 是匹配项在搜索文本中的位置,使用切片表示法值。