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

从python字符串中提取某些单词,python,Python,我知道使用正则表达式还有很多相关的问题,但我想知道从字符串中提取某些单词并将其添加到列表中的最佳方法是什么 假设我的输入形式为[A1A B2B、C3C、D4D、E5E],我想从中提取第三个和第四个单词。我的输出应该包含带有项目['C3C','D4D']的列表。我如何使用findall实现这一点 注意:上面的每个单词不是用逗号分隔的。A1A和B2B之后没有逗号,使用re.findall s = "[A1A B2B, C3C, D4D, E5E]" print (re.findall("\w\d\

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

假设我的输入形式为[A1A B2B、C3C、D4D、E5E],我想从中提取第三个和第四个单词。我的输出应该包含带有项目['C3C','D4D']的列表。我如何使用findall实现这一点


注意:上面的每个单词不是用逗号分隔的。A1A和B2B之后没有逗号,使用
re.findall

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

将字符串转换为一个列表,(并去掉
[
]
字符),然后将其切片:

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

如果您的输入是一个操作系统字符串列表,
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]
,则使用正则表达式。移除方括号和COMA,然后拆分:

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

去掉两边的括号,分开,去掉逗号,取你想要的切片

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

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

print thelist

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

>>> 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']
如果您只在特定位置查找单词,请使用拼接(从您的问题中,我不知道您需要哪个):


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

您的输入是一个长字符串还是一个列表?@merlin2011“从列表中提取某些单词并将其添加到列表中的最佳方法。”@padraiccningham标题是“从python字符串中提取某些单词”,OP声明“上面的每个单词都不是用逗号分隔的。”。A1A和B2B”后面没有逗号。对我来说似乎是一个字符串。@PadraicCunningham:是的。很抱歉混淆了。输入是一个字符串string@PadraicCunningham列表中有什么?
>>> input_list[2:4]
['C3C', 'D4D']