我正在尝试使用正则表达式在 :
字符之前拆分
单词。
但是,我不想拆分
时间结构,比如 15:46:00。
我拥有的所有信息都在 for
循环中,并且来自抓取 pdf 文件。
所以,使用这段代码:
for item in result:
for key in keyHeaders:
if key in item.encode('utf-8'):
item = item.replace(key, '')
if ':' in item:
item = item.replace(':', ':\n')
输出:
15:
46:
00
State:
NY
Phone:
x-xxx-xxx
使用正则表达式或非正则表达式我如何拆分
特定的单词而不是由:
字符连接的数字。
我试过了,但没有任何反应。事实上,它不会拆分任何东西。
for item in result:
for key in keyHeaders:
if key in item.encode('utf-8'):
item = item.replace(key, '')
lines = re.compile(r'(?<!\\d\\d):(?!\\d\\d)') # expect split words before ':'
if item == re.findall(lines, item):
item = item.replace(':', ':\n')
输出:
15:46:00
State:NY
Phone:x-xxx-xxx
感谢您的支持!
最佳答案
您的代码有两个问题。首先,您使用了一个原始字符串,然后仍然将“\\d”上的反斜杠加倍,将其更改为“\d”。另一个问题是您将整个项目与 re.findall 返回的值进行比较。如果您的正则表达式是正确的,re.findall 将只为非日期的项目返回一个“:”,因此您应该与“:”进行比较,或者只返回任何内容。
对于相对简单的匹配而言,您的正则表达式也过于复杂。我会使用类似的东西:
if not re.findall(r'\d\d:\d\d:\d\d', item):
item = item.replace(':', ':\n')
使用 re.sub 或 re.split 完成整个工作可能还有更简单的方法,但这应该可以帮助您克服当前的障碍。
关于Python拆分 ':'字符前的单词但不拆分时间结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609265/