python re如何在特定单词后留出空间?

标签 python python-3.x python-re

我想在“Flavor”一词后添加空格,但在每个字母后都有空格。这是我的代码:

re.sub(r'(?<=["Flavor"])(?=[^\s])', r' ', short_description)

我的 python shell 结果 >>>'F l a v o r BLACKWATER OG (I), APPLE JACK (S), BLACKBERRY KUSH (I), SOUR TANGIE (S), SUNSET GELATO (H), GORILLA GLUE 4 (H), GRAND DADDY PURP ( I), 白寡妇 (S), NAPALM OG (I)'

我期望得到这个结果:

'Flavor BLACKWATER OG (I), APPLE JACK (S), BLACKBERRY KUSH (I), SOUR TANGIE (S), SUNSET GELATO (H), GORILLA GLUE 4 (H), GRAND DADDY PURP (I), WHITE WIDOW (S), NAPALM OG (I)'

最佳答案

使用 re.sub使用下面显示的正则表达式替换所有出现的 Flavor后跟 0 个或多个空白字符 Flavor (在 Flavor 之后正好有 1 个空格):

import re
short_descriptions = [
    'FlavorBLACKWATER OG',
    'Flavor BLACKWATER OG',
    'Flavor  BLACKWATER OG'
]
for short_description in short_descriptions:
    print(re.sub(r'Flavor\s*', r'Flavor ', short_description))

打印:

Flavor BLACKWATER OG
Flavor BLACKWATER OG
Flavor BLACKWATER OG

请注意,上面的正则表达式完全避免了后视 ((?<=Flavor ))。
另请注意,正如上面提到的评论者,您使用的正则表达式指定了一个字符类 ["Flavor"] , 因此在任何这些指定字符后添加一个空格:", F, l, a, v, o, r .

关于python re如何在特定单词后留出空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69382963/

相关文章:

python gdb 和 ctypes

python - 与 Pandas 总结几个月

Python:使用多处理分块处理大型字典

python - 我应该将 Unix 时间存储在单独的表中吗

python - 确定窗口大小的 turtle python设置

python - 从给定字符串中提取最大数值

python - 如何处理返回 NSError 的 PyObjC 方法?

python-3.x - PyCharm 中的弱警告 : Unexpected argument

python - 如何在不使用单独的替换函数的情况下循环正则表达式匹配并进行替换?

python - 如何在 python 中使用正则表达式获取前导零的所有索引