从python字符串中提取某些单词

时间:2014-08-05 23:55:33

标签: python

我知道使用正则表达式有很多相关问题,但我想知道从字符串中提取某些单词a的最佳方法是什么,并将它们添加到列表中。

假设我的输入是[A1A B2B,C3C,D4D,E5E]的形式,我想从中提取第3和第4个字。我的输出应包含带有项目的列表[' C3C',' D4D']如何使用findall实现此目的?

注意:上面的每个单词都没有用逗号分隔。 A1A和B2B之后没有逗号

5 个答案:

答案 0 :(得分:0)

使用re.findall

s  = "[A1A B2B, C3C, D4D, E5E]"
print (re.findall("\w\d\w",s)[2:4])
'C3C', 'D4D']

答案 1 :(得分:0)

将字符串转换为列表,(并删除,[]个字符),然后对其进行切片:

>>> s = "[A1A B2B, C3C, D4D, E5E]"
>>> l = [val.strip('[,]') for val in s.split()]
>>> l[2:4]
['C3C', 'D4D']

答案 2 :(得分:0)

如果你的输入是一个列表字符串l = ["A1A B2B", "C3C", "D4D", "E5E"],那么将列表中的所有stings拆分为单词,并创建一个新列表`l_new',其中每个元素将是一个单词:

l = ["A1A B2B", "C3C", "D4D", "E5E"]
l_new = sum([x.split() for x in l],[])
l_new[2:4]

或者,如果您的实际输入是字符串l = '[A1A B2B, C3C, D4D, E5E]',则使用正则表达式。删除方括号和彗差,然后拆分:

import re
l_new = re.split(' ',re.sub('[\[\],]','',l))
l_new[2:4]

答案 3 :(得分:0)

删除两侧的括号,拆分,删除逗号,取出所需的切片。

mystr = "[A1A B2B, C3C, D4D, E5E]"
mystr = mystr[1:-1]

thelist = [x.replace(",","") for x in mystr.split()][2:4]

print thelist

答案 4 :(得分:0)

在输入中搜索单词并不像需要正则表达式的东西(搜索给定结构的值确实如此 - 所以您可能想要澄清您的输入)。您可能希望使用正则表达式来帮助您,因为您正在处理许多可能的分隔符,而不仅仅是空格或逗号。

>>> import re
>>> input = "A1A B2B, C3C, D4D, E5E"
>>> input_list = re.findall(r"[\w']+", input)
>>> input_list
['A1A', 'B2B', 'C3C', 'D4D', 'E5E']

然后,根据您要搜索的单词列表,您可以使用集合交叉点快速提取所需内容:

>>> search_terms = ['C3C', 'D4D']
>>> list(set(input_list) and set(search_terms))
['C3C', 'D4D']

如果你只是寻找特定地方的单词,请使用拼接(我对你需要的东西感到困惑,但是,从你的问题来看):

>>> input_list[2:4]
['C3C', 'D4D']

如果您正在搜索适合正则表达式的特定模式/值,那么您需要向我们提供您想要查找的输入和模式,以便我们可以帮助解决这个问题。