gpt4 book ai didi

Python unicode 正则表达式不适用于大字符串

转载 作者:行者123 更新时间:2023-11-28 18:24:26 26 4
gpt4 key购买 nike

<分区>

出于某种原因,当在相当大的 unicode 字符串上使用 re.sub 时,该函数仅查找并替换匹配项的前半部分,而忽略后半部分。但是,当我减小字符串的大小时(删除前半部分),它工作正常。当我在 ASCII 字符串上进行测试时,它也可以正常工作。

谁能帮我解决这个问题?

代码:

s = u"Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка."

# Find all capital letters, and add '!' before them
print re.sub(ur"([\u0410-\u042f])", ur"!\1", s, re.UNICODE)

结果:

!Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная !Строка. !Очень !Длинная Строка. Очень Длинная Строка. Очень Длинная Строка. Очень Длинная Строка.

如您所见,字符串的最后一部分没有被处理。

更新:

正如 RomanPerekhrest 在下面发现的那样,当我们添加额外的标志(例如 re.MULTILINE、re.VERBOSE 等)时,该函数会替换字符串的较大部分,但仍然不完整。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com