Python拆分 ':'字符前的单词但不拆分时间结构

标签 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 = 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/

相关文章:

javascript - 跨语言字符串转义

python - Datetimefield、EmailField 不可调用且 PrimaryKeyRelatedField 有意外参数

python - 为什么 SSL 包装的套接字需要 `server_hostname`?

regex - Angular 动态 ngPattern

regex - 使用 RegEx 删除内部嵌套字符串

string - 将字符串转换为 Foo(类型字符串)

python - numpy.getbuffer 导致 AttributeError : 'module' object has no attribute 'getbuffer'

python - 流图 - Python 中的可视化

Java 字符串之间的正则表达式

android - 更改资源字符串中的单词颜色