Python在“:”字符之前拆分单词,但不拆分时间结构

Python在“:”字符之前拆分单词,但不拆分时间结构,python,regex,string,Python,Regex,String,我正在尝试拆分之前的单词:使用正则表达式的字符 但是,我不想分割时间结构,比如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 =

我正在尝试拆分之前的单词:使用正则表达式的字符

但是,我不想分割时间结构,比如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
使用regex或non-regex,如何具体拆分单词,而不是由:字符连接的数字

我试过了,但什么也没发生。事实上,它不会分裂任何东西

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')

谢谢你的支持

您的代码有两个问题。首先使用原始字符串,然后仍然将“\\d”上的反斜杠加倍,将其更改为“\d”。另一个问题是将整个项目与re.findall返回的值进行比较。如果您的regexp是正确的,re.findall将只为非日期的项目返回“:”,因此您应该与“:”进行比较,或者只返回任何内容

对于相对简单的匹配,您的regexp也过于复杂。我会使用类似于:

if not re.findall(r'\d\d:\d\d:\d\d', item):
    item = item.replace(':', ':\n')

使用re.sub或re.split也可能有更简单的方法来完成整个工作,但这将帮助您克服当前的障碍。

您的代码有两个问题。首先使用原始字符串,然后仍然将“\\d”上的反斜杠加倍,将其更改为“\d”。另一个问题是将整个项目与re.findall返回的值进行比较。如果您的regexp是正确的,re.findall将只为非日期的项目返回“:”,因此您应该与“:”进行比较,或者只返回任何内容

对于相对简单的匹配,您的regexp也过于复杂。我会使用类似于:

if not re.findall(r'\d\d:\d\d:\d\d', item):
    item = item.replace(':', ':\n')

使用re.sub或re.split也可能有更简单的方法来完成整个工作,但这将帮助您克服当前的障碍。

您最初的输入是什么样的?是15:46:00吗州:纽约电话:x-xxx-xxx?不是,有几个项目,比如100。它们会根据pdf中的内容而变化。然而,几乎100%的单词都在:字符之前。这就是为什么我认为正则表达式可能是一个很好的分割它们的选项。你最初的输入是什么样的?是15:46:00吗州:纽约电话:x-xxx-xxx?不是,有几个项目,比如100。它们会根据pdf中的内容而变化。然而,几乎100%的单词都在:字符之前。这就是为什么我认为正则表达式可能是一个很好的拆分它们的选择!非常感谢你的帮助。它只打印我想要的输出。格雷西亚斯,太好了!非常感谢你的帮助。它只打印我想要的输出。格雷西亚斯。