gpt4 book ai didi

python - 如果没有,如何优雅地在子字符串周围添加空格?

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:15 25 4
gpt4 key购买 nike

输入:

"bla&&bla...bla &&bla...bla&& bla...bla && bla"

输出:

"bla && bla...bla && bla...bla && bla...bla && bla"

目前我正在这样做:

str    = "if((a&&b)||c)";
wrong = "&&";
right = " && ";

startFrom = 0
wi = 0
while wi != -1
wi = str.find(wrong, startFrom)
ri = str.find(right, startFrom) + 1
startFrom = wi + 1
if wi != ri
pre = wi - 1
post = wi + len(wrong)
if str[pre] != " "
str = str[:pre] + " " + str[pre:]
if str[post] != " "
str = str[:post] + " " + str[post:]

是否有一种清晰可读的方式来做同样的事情?

最佳答案

看来你想要这样的东西,

>>> s = "if((a&&b)||c) && b"
>>> re.sub(r'(?<!\s)(&&)(?!\s)', r' \1 ', s)
'if((a && b)||c) && b'

上面的正则表达式将捕获 &&只有前后没有空格的字符串。

更新:

>>> re.sub(r'\s*&&\s*', r' && ', 'bla&&bla...bla &&bla...bla&& bla...bla && bla')
'bla && bla...bla && bla...bla && bla...bla && bla'

>>> re.sub(r'\s+&&(?!\s)|(?<!\s)&&\s+|(?<!\s)&&(?!\s)', r' && ', "bla&&bla...bla &&bla...bla&& bla...bla && bla")
'bla && bla...bla && bla...bla && bla...bla && bla'
  • (?<!\s)断言匹配项前面不会有空格字符的负后视。

  • (?!\s)否定前瞻,断言匹配后不会跟空格字符。

关于python - 如果没有,如何优雅地在子字符串周围添加空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28435632/

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