python - 正则表达式引用 re.sub 中的变量

标签 python regex

您好,我正在用 Python 中的正则表达式函数进行练习,但我遇到了一个问题。有没有办法引用字符串的选定部分?为了更清晰,我想将组合的主题标签拆分为主要单词。为此,我使用了一个名为“wordninja”的库。所以我将解码格式更改为 wordninja.py 文件以使其理解 latin-1 并更改了最后一个字符串以使其拆分单词,如果我尝试拆分组成的主题标签,它会给我回到主要单词,为了做到这一点,我以 .txt 格式编写了意大利语词汇表。为此,我正在这样做:

import wordninja
dic = wordninja.LanguageModel('words_italian_covid.txt.gz')
dic.split('carnesintetica')
>>>['carne', 'sintetica']

所以大的想法是用空格连接这个拆分句子:

" ".join(dic.split('carnesintetica'))
>>> carne sintetica

为此,我只想替换选定字符串的一部分,对其进行此操作。因此,“carnesintetica”一词将成为 re.sub 选择中的选定部分,标记为 (\w)。我举个例子:

text1 = '#Coronavirus: ripartiamo dalla Terra.Cosa mangeremo domani? #Food3D, #insetti e #carnesintetica?'

我希望 dic.split() 仅在选定的主题标签上运行,这意味着在“#Coronavirus”、“#Food3D”、“#insetti”和“#carnesintetica”上运行,以获得“”, 《<食物 3D>》、《》、《》。 我是这样处理的:

import re
text1 = re.sub(r'#(\w+)',r'< \1 >', text1)

然后在这个字符串上我有段问题:我会用 dic.split(\1) 操作,所以只在选定的单词上,也就是说\1:

text1 = re.sub(r'< (\w+) >', ' '.join(dic.split(\w+)), textx1)

这里是问题所在:我想知道如何在 dic.split 函数中引用 r'< (\w+) >' 中选定的“(\w+)”部分以使该函数运行仅针对所选单词,而不是整个句子。 ?为了更清晰,我只想对两个 <> 符号内的单词进行操作,以获得这种类型的输出:

'< Coronavirus >: ripartiamo dalla Terra.Cosa mangeremo domani? < Food3D >, < insetti > e < carne sintetica >?'

感谢您抽出时间来回答我的简单问题。

最佳答案

你可以使用

import re
import wordninja

my_dict = wordninja.LanguageModel('words_italian_covid.txt.gz')

text = '#Coronavirus: ripartiamo dalla Terra.Cosa mangeremo domani? #Food3D, #insetti e #carnesintetica?'

print( re.sub(r'#(\w+)', lambda x: f'< {" ".join(my_dict.split(x.group(1)))} >', text) )

# => < Coronavirus >: ripartiamo dalla Terra.Cosa mangeremo domani? < Food3D >, < insetti > e < carne sintetica >?

参见 Python demo .

lambda x: f'< {" ".join(my_dict.split(x.group(1)))} >'部分将匹配项替换为 < <FOUND_PHRASE_SPLIT_WITH_SPACES > .

关于python - 正则表达式引用 re.sub 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70316963/

相关文章:

python - 操作变量时出现 UnboundLocalError 产生不一致的行为

python - 仅使用一列对嵌套列表进行排序

php - 如何找到最后一个段落元素?

python - 使用 python 正则表达式搜索整行

带 stringr 的正则表达式::如何查找模式的第一个实例

java - 使用正则表达式从 HTML 属性中提取数字

python - 在 django rest 框架上覆盖 JSONSerializer

python - 在cartopy中绘制旋转极投影

java正则表达式返回false

python - 如何使用 python 读取微秒精度的 mysql 日期时间字段