这是我的剧本:
import re
corpus = "Me[Unknown] temo[Unknown] que[Unknown] buscare[Unknown] otras[Unknown] opciones[Unknown] esta[Unknown] nunca[ADV+NEG+H_CIRCONSTANT_TEMPS+C_TPS_FREQUENCE+SC_FREQUENCE_FORTE]
más[ADV+comp+PADV+H_CIRCONSTANT_QUANTITE+C_QNT_FORTE] compraré[V+H_PREDICAT_ACTION+C_PREDICAT_TRANSACTION+SC_TRANSACTION_ACHAT] buscare[INCONNU] otras[INCONNU] opciones[INCONNU] por[INCONNU] la[INCONNU] calidad[INCONNU] de[INCONNU] la[INCONNU] luz[INCONNU]"
regex = re.findall(r"(\w+)\[ADV\+NEG\+H_CIRCONSTANT_TEMPS.*?\]/(\w+)\[ADV\+comp\+PADV\+H_CIRCONSTANT_QUANTITE.*?\]/(\w+)\[V+H_PREDICAT_ACTION+C_PREDICAT_TRANSACTION.*?\]", texte)
print(regex)
我需要这些输出:
nuncamáscompraré
和
nunca [ADV + NEG + H_CIRCONSTANT_TEMPS + C_TPS_FREQUENCE + SC_FREQUENCE_FORTE]más[ADV + comp + PADV + H_CIRCONSTANT_QUANTITE + C_QNT_FORTE]compraré[V + H_PREDICAT_ACTION + C_PREDICAT_TRANSACTION + SC_TRANSACTION_ACHAT]
输出:
[]
答案 0 :(得分:1)
使用re.findall
和str.join
In [48]: ' '.join(re.findall('[^\s\]]+(?=\[)', text))
Out[48]: 'nunca más compraré'
<强>详情
[^\s\]]+
- 匹配任何不是空白字符或右括号的内容(?=\[)
- 预测开场[
答案 1 :(得分:1)
import re
text = "Me[Unknown] temo[Unknown] que[Unknown] buscare[Unknown] otras[Unknown] opciones[Unknown] esta[Unknown] nunca[ADV+NEG+H_CIRCONSTANT_TEMPS+C_TPS_FREQUENCE+SC_FREQUENCE_FORTE]más[ADV+comp+PADV+H_CIRCONSTANT_QUANTITE+C_QNT_FORTE] compraré[V+H_PREDICAT_ACTION+C_PREDICAT_TRANSACTION+SC_TRANSACTION_ACHAT] buscare[INCONNU] otras[INCONNU] opciones[INCONNU] por[INCONNU] la[INCONNU] calidad[INCONNU] de[INCONNU] la[INCONNU] luz[INCONNU]"
regex = re.findall(r"([A-Za-z\[\] ]+)\] (\w+)\[ADV\+NEG\+H_CIRCONSTANT_TEMPS.*?\](\w+)\[ADV\+comp\+PADV\+H_CIRCONSTANT_QUANTITE.*?\](?: )(\w+)\[V\+H_PREDICAT_ACTION\+C_PREDICAT_TRANSACTION.*?\]", text)
print(' '.join(regex[0][1:]))
我刚刚纠正了你的正则表达式中的一些错误:
(\w+)
匹配nunca
之前的字符,但\不匹配[
或]
所以我使用([A-Za-z\[\] ]+)\]
代替匹配字母,大括号和空格/(\w+)
\w+
匹配您的字词,/
之前(\w+)
是不必要的,但却找不到您想要的结果[V+H_PREDICAT_ACTION+C_PREDICAT_TRANSACTION.*?\]
的最后一场比赛中使用转义字符,因此我使用\+
代替+
来转义字符+
。因此,应用此修复程序,您将获得结果:
nunca más compraré