gpt4 book ai didi

python - 在特定字符之间插入空格,但如果后跟特定字符正则表达式则不插入空格

转载 作者:行者123 更新时间:2023-11-28 21:34:56 27 4
gpt4 key购买 nike

使用 python 正则表达式,我希望在字母字符和数字之间插入空格(字母总是在数字之前),但不在(数字和连字符)或(数字和下划线)之间插入空格。

理想情况下,我希望它替换行上的所有此类示例(请参阅下面的第三个示例字符串),但即使只执行第一个也很棒。

我已经走到这一步了:

import re
item = "Bob Ro1-1 Fred"
txt = re.sub(r"(.*)(\d)", r"\1 \2", item)
print(txt) #prints Bob Ro1 -1 Fred (DESIRED WOULD BE Bob Ro 1-1 Fred)

我尝试过在不同的地方粘贴 ? 来取消搜索,但还没有找到魔力。

Sample strings: Original ==> Desired output
1. "Bob Ro1 Sam cl3" ==> "Bob Ro 1 Sam cl 3"
2. "Some Guy ro1-1 Sam" ==> "Some Guy ro 1-1 Sam"
3. "ribbet ribbit ro3_2 bob wow cl1-3" ==> "ribbit ribbit ro 3_2 bow wow cl 1-3"

最佳答案

您可以使用

re.sub(r'([^\W\d_])(\d)', r'\1 \2', s)

请参阅regex demo

一个variation使用环视:

re.sub(r'(?<=[^\W\d_])(?=\d)', ' ', s)

([^\W\d_])(\d)正则表达式匹配任何单个字母并将其捕获到组 1 中,并将下一个数字捕获到组 2 中。然后,\1 \2替换模式将第 1 组中的字母、空格以及第 2 组中的数字插入到结果字符串中。

(?<=[^\W\d_])(?=\d)匹配字母和数字之间的位置,因此替换字符串仅包含空格。

请参阅Python demo :

import re
strs = [ 'Bob Ro1-1 Fred', 'Bob Ro1 Sam cl3', 'Some Guy ro1-1 Sam', 'ribbet ribbit ro3_2 bob wow cl1-3' ]
rx = re.compile(r'([^\W\d_])(\d)')
for s in strs:
print(re.sub(r'([^\W\d_])(\d)', r'\1 \2', s))
print(re.sub(r'(?<=[^\W\d_])(?=\d)', ' ', s))

输出:

Bob Ro 1-1 Fred
Bob Ro 1-1 Fred
Bob Ro 1 Sam cl 3
Bob Ro 1 Sam cl 3
Some Guy ro 1-1 Sam
Some Guy ro 1-1 Sam
ribbet ribbit ro 3_2 bob wow cl 1-3
ribbet ribbit ro 3_2 bob wow cl 1-3

关于python - 在特定字符之间插入空格,但如果后跟特定字符正则表达式则不插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52882380/

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