如果我有一个文本主体,想用保留单词的其余部分来替换“ion”或“s”(所以如果单词是reflection,它应该输出reflect),我该怎么做?我试过:
new_llw = re.sub(r'[a-z]+ion', "", llw)
print(new_llw)
字符串
它取代了整个单词,我试着
if re.search(r'[a-z]+ion', "", llw) is True:
re.sub('ion', '', llw)
print(llw)
型
这给了我一个错误:
TypeError:不支持&的操作数类型:'str'和'int'
2条答案
按热度按时间cnjp1d6j1#
TypeError: unsupported operand type(s) for &: 'str' and 'int'
错误是由于您正在像使用re.sub
一样使用re.search(r'[a-z]+ion', "", llw)
。re.search
的第二个参数是输入字符串,它是空的,第三个参数是标志,它是用特定的正则表达式选项(如re.A
或re.I
)设置的,可以表示按位掩码(re.A | re.I
)。现在,如果需要匹配
ion
作为单词中的后缀,可以使用字符串
在这里,
\B
匹配一个紧接在单词char(字母、数字或连接符标点符号,如_
)之前的位置,然后ion
匹配ion
,\b
匹配一个位于字符串末尾或紧接在非单词char之后的位置。要同时匹配
s
后缀,请执行以下操作:型
(?:...)
是一个非捕获组。参见regex demo。
变化
如果只将单词视为字母序列,则可以使用
型
在这里,
(?<=[a-zA-Z])
匹配紧接在ASCII字母前面的位置。k5ifujac2#
对于
ion
替换,您可以使用正向后查找:字符串