【问题标题】:python re how to give space after specific word?python re如何在特定单词后给出空格?
【发布时间】:2021-09-29 20:26:41
【问题描述】:

我正在尝试在单词“Flavor”之后添加空格,但在每个字母之后都有空格。这是我的代码:

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

我的 python shell 结果 &gt;&gt;&gt;'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), WHITE WIDOW (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)'

【问题讨论】:

  • 为什么不只是short_description.replace('Flavor','Flavor ')?这不是一个真正的正则表达式问题。
  • @Tim Roberts 感谢您的建议,但我们可以在正则表达式中进行吗?
  • 我第二个蒂姆。您的代码中的具体问题是 [chars] 表示“c,h,a,r,s 中的任何一个”。如果要完全匹配文本,请使用chars(不带方括号)。
  • re.sub(r'(?&lt;=Flavor\s)', r' ', short_description) 或只是re.sub(r'(?&lt;=Flavor )', r' ', short_description)
  • 除非您需要正则表达式,否则不应使用正则表达式。与简单的字符串搜索相比,正则表达式的开销很大。

标签: python python-3.x python-re


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多