如何从列表中使用“模式”拆分String

时间:2016-08-10 20:09:47

标签: python string list python-2.7

我在使用python查找列表中的部分字符串时遇到了一个小问题。

我从文件中加载字符串,其值为以下之一:(none, 1 from list, 2 from list, 3 from list or more...)

我需要执行不同的操作,具体取决于字符串是否等于"",字符串是否等于1 element from list,或者字符串是否包含2个或更多元素。例如:

List = [ 'Aaron', 'Albert', 'Arcady', 'Leo', 'John' ... ]
String = ""             #this is just example
String = "Aaron"        #this is just example
String = "AaronAlbert"  #this is just example 
String = "LeoJohnAaron" #this is just example

我创造了这样的东西:

if String == "":          #this works well on Strings with 0 values
    print "something"
elif String in List:      #this works well on Strings with 1 value
    print "something else"
elif ...                  #dont know what now

最好的方法是使用列表中的模式拆分此String。我在努力:

String.Find(x) #failed.

我试图找到类似的帖子但不能。

3 个答案:

答案 0 :(得分:0)

if String == "":          #this works well on Strings with 0 values
    print "something"
elif String in List:      #this works well on Strings with 1 value
    print "something else"
elif len([1 for x in List if x in String]) == 2
    ...

这称为列表推导,它将遍历列表并找到所有列表元素,这些元素具有与手头字符串相同的子字符串,然后返回其长度。

请注意,如果您使用“Ann”和“Anna”这样的名称可能会出现一些问题,字符串中的名称“Anna”将被计算两次。如果你需要一个解决这个问题的解决方案,我建议拆分大写字母,通过拆分大写字母明确地将列表分成不同的名称(如果你想我可以更新这个解决方案,以显示如何用正则表达式)

答案 1 :(得分:0)

我认为最直接的方法是循环遍历名称列表,并为每个名称检查它是否在您的字符串中。

for name in List:
   if name in String:
      print("do something here")

答案 2 :(得分:0)

因此,您想要查找某个字符串是否包含给定列表的任何成员。

迭代列表并检查字符串是否包含当前项:

for data in List:
    if data in String:
        print("Found it!")