我用fitz从python中的PDF中获取名称信息。 问题是,大多数信息都有空格来匹配背景,这给了我给予例如:firstname =“P I E R R E“,lastname =“L E D U C D E C O L“。 我需要删除字符之间的空格,这些空格不紧挨着另一个空格。 当然,在第一次我删除了所有的空间与“s/\s//g“,但为名称它给给予我“LEDUCDECOL“,我需要“LE DUC DE COL“。
# doing it with no loop, just regex
firstname = "P I E R R E"
lastname = "L E D U C D E C O L"
re.sub(r' ', '', firstname) + " " + " ".join([x.replace(" ", "") for x in re.split(r'\s{2}', lastname)])
'PIERRE LE DUC DE COL'
2条答案
按热度按时间ubbxdtey1#
您可以匹配单个空格``,并在重复捕获组中匹配可选的后续空格,这将保留捕获组中最后一次迭代的值(单个空格)。
在替换中,使用组1值,使用
\1
如果你想匹配一个空格字符,你可以用
\s
替换空格,但注意它也可以匹配一个换行符:参见regex demo和Python demo。
举例来说:
输出
如果你想匹配一个没有跟在另一个空格后面的空格,你可以使用一个负的lookahead,并在替换中使用一个空字符串:
另一个regex demo。
g52tjvyc2#