Python中元组列表处理求助:提取字符串内首个目标单词
解决方法:提取元组字符串中的首个单词
别担心那个u'标记!它是Python 2里用来表示Unicode字符串的语法——在Python 3里,所有字符串默认都是Unicode类型,所以这个标记完全不影响你处理内容,把它当成普通字符串就行~
针对你的需求,这里有两种简单的实现方式:
方法一:字符串分割法(格式固定时首选)
如果每个字符串的格式都是数字*"单词" + ...这种固定模式,直接用字符串分割就能快速提取目标:
# 你的原始列表 original_list = [(2, u'0.267*"sugar" + 0.266*"bad"'), (0, u'0.222*"father" + 0.222*"likes"')] # 列表推导式提取首个单词 result = [item[1].split('*"')[1].split('"')[0] for item in original_list] print(result) # 输出: ['sugar', 'father']
原理很简单:
- 用
*"分割字符串,得到的第二个元素就是"sugar" + ...这样的片段 - 再用
"分割这个片段,第一个元素就是我们要的单词
方法二:正则表达式法(格式灵活时首选)
如果字符串的格式可能有变化(比如引号是单引号、符号位置不同),用正则表达式匹配会更稳健:
import re original_list = [(2, u'0.267*"sugar" + 0.266*"bad"'), (0, u'0.222*"father" + 0.222*"likes"')] # 匹配第一个被双引号包裹的内容 result = [re.search(r'"([^"]+)"', item[1]).group(1) for item in original_list] print(result) # 输出: ['sugar', 'father']
正则表达式"([^"]+)"的含义是:匹配双引号,然后捕获所有不是双引号的字符,直到遇到下一个双引号——这样就能精准提取第一个被引号包裹的单词。
内容的提问来源于stack exchange,提问作者user2189002
相关产品推荐
相关产品推荐

