我知道使用正则表达式有很多相关问题,但我想知道从字符串中提取某些单词a的最佳方法是什么,并将它们添加到列表中。
假设我的输入是[A1A B2B,C3C,D4D,E5E]的形式,我想从中提取第3和第4个字。我的输出应包含带有项目的列表[' C3C',' D4D']如何使用findall实现此目的?
注意:上面的每个单词都没有用逗号分隔。 A1A和B2B之后没有逗号
答案 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']
如果您正在搜索适合正则表达式的特定模式/值,那么您需要向我们提供您想要查找的输入和模式,以便我们可以帮助解决这个问题。