假设我有一个列表,内容如下:
list = [" I wish I was Alex's best 'friend' "]
字符串我想删除包含friend的撇号,但不删除Alex's中使用的撇号,如果我像这样尝试使用re.sub:
list = re.sub('\'\')', '', list)
型它删除了所有我不想要的撇号,我如何才能做到这一点,使结果是:
list = [" I wish I was Alex's best friend " ]
型
egdjgwm81#
另一种方法:
re.sub(r"(?<![a-zA-Z])'(.*?)'(?![a-zA-Z])", r'\1', list[0])
字符串这将查找一个撇号,后面跟任何东西,后面跟另一个撇号,只要在第一个撇号之前或最后一个撇号之后没有字母。
fivyi3re2#
假设撇号一次只在一个单词周围,而不是一个完整的句子,你可以这样使用:
re.sub(r"'(\w+)'", "\1", your_string) # your_string can be strings from your list if you iterate over it
字符串这将捕获被撇号包围的单词,并删除这些撇号。因此,如果只有一个撇号,如Alex's或it's,它不会删除它们。请注意,这并不总是有效的,例如,如果Alex's周围有撇号,则无法知道要删除哪个撇号(有,但它不会被此正则表达式处理)
Alex's
it's
你可以使用一个greedy(> 0)量词和一个alternate语句来删除Alex's周围的撇号:
re.sub(r"'((?:\w|')+)'", "\1", your_string)
2条答案
按热度按时间egdjgwm81#
另一种方法:
字符串
这将查找一个撇号,后面跟任何东西,后面跟另一个撇号,只要在第一个撇号之前或最后一个撇号之后没有字母。
fivyi3re2#
假设撇号一次只在一个单词周围,而不是一个完整的句子,你可以这样使用:
字符串
这将捕获被撇号包围的单词,并删除这些撇号。因此,如果只有一个撇号,如
Alex's
或it's
,它不会删除它们。请注意,这并不总是有效的,例如,如果
Alex's
周围有撇号,则无法知道要删除哪个撇号(有,但它不会被此正则表达式处理)更新
你可以使用一个greedy(> 0)量词和一个alternate语句来删除
Alex's
周围的撇号:型