首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换与regex匹配的文本子字符串的更优雅的方法

替换与regex匹配的文本子字符串的更优雅的方法
EN

Stack Overflow用户
提问于 2022-07-27 06:13:43
回答 1查看 32关注 0票数 0

我对python还不熟悉,所以我想对此有一些想法。我正在编写一个函数来查找句子中匹配的单词模式,并替换仅匹配的单词中的空格。

输入:

(C)变量< var_CONST1(例-125(N)) [AAA BBB有]和[技術企画]和[AAA BBB CCC]

预期输出:

(C)变量< var_CONST1(例-125(N)) [AAA-BBB有]和[技術企画]和[AAA-BBB-CCC]

在示例中,“[AAA BBB有]”和“[AAA BBB]”中的空格应替换为"-“。

我在下面创建了解决问题的代码。然而,我想知道这是否是一种更好/更优雅的写作方式。

代码语言:javascript
复制
import re

text = "(c)variable < var_CONST1(例 -125(N)) 【AAA BBB有】AND【技術企画】AND 【AAA BBB CCC】"

match_list = re.findall(r"【[\w\s]+】", text)
match_list = [w.replace(" ", "-") for w in match_list]
tmp_txt = re.sub(r"【[\w\s]+】",  " tkn ", text).split()

new_txt = ""
for txt in tmp_txt:
    if txt == "tkn":
      new_txt = new_txt + " " + match_list[0]
      match_list.pop(0)
    else:
      new_txt = new_txt + " " + txt

print(new_txt)

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-27 06:17:49

我们可以在这里使用re.sub和回调函数,只针对【...】内部出现的空间。

代码语言:javascript
复制
inp = "(c)variable < var_CONST1(例 -125(N)) 【AAA BBB有】AND【技術企画】AND【AAA BBB CCC】"
output = re.sub(r'【.*?】', lambda m: m.group().replace(' ', '-'), inp)
print(output)

这些指纹:

代码语言:javascript
复制
(c)variable < var_CONST1(例 -125(N)) 【AAA-BBB有】AND【技術企画】AND【AAA-BBB-CCC】
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73133027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档