如何移除包裹特定单词的单引号且保留所有格形式的单引号?
解决方案
你可以通过正则表达式的断言功能精准区分两种单引号:作为包裹引号的单引号,和作为所有格的单引号,只移除前者。
具体实现代码
import re # 原列表 my_list = [" I wish I was Alex's best 'friend' "] # 处理列表中的每个字符串元素 processed_list = [re.sub(r"(?<!\w)'|'(?!\w)", "", item) for item in my_list] print(processed_list) # 输出:[" I wish I was Alex's best friend "]
正则逻辑说明
这个正则表达式(?<!\w)'|'(?!\w)的核心逻辑是:
(?<!\w)':匹配**前面不是单词字符(字母、数字、下划线)**的单引号——比如'friend'开头的单引号,前面是空格,不属于单词字符,会被匹配;而Alex's里的单引号前面是字母x,属于单词字符,不会被匹配。|:逻辑“或”'(?!\w):匹配后面不是单词字符的单引号——比如'friend'结尾的单引号,后面是空格,不属于单词字符,会被匹配;而Alex's里的单引号后面是字母s,属于单词字符,不会被匹配。
这样就能精准移除包裹单词的单引号,同时保留所有格的单引号。
内容的提问来源于stack exchange,提问作者Lex047
相关产品推荐
相关产品推荐

