如何使用Python在字符串列表中查找字母

时间:2015-04-08 18:18:03

标签: python

有没有更短的方法来编写这段代码?

lst = ['Ellie', 'Steve', 'Sam', 'Owen', 'Gavin']
for name in lst:
    if 'A' in name:
        print(name)
    if 'B' in name:
        print(name)
    if 'C' in name:
        print(name)
    if 'D' in name:
        print(name)
    if 'E' in name:
        print(name)
    if 'F' in name:
        print(name)
    if 'G' in name:
        print(name)
    if 'H' in name:
        print(name)
    if 'I' in name:
        print(name)
    if 'J' in name:
        print(name)
    if 'K' in name:
        print(name)
    if 'L' in name:
        print(name)
    if 'M' in name:
        print(name)

基本上我要做的是打印列表中以字母A到M开头的每个名字

5 个答案:

答案 0 :(得分:5)

如果您要检查初始字符是否在A-M中,那么您可以使用简单的if语句:

if name[0] in "ABCDEFGHIJKLM":
    print(name)

答案 1 :(得分:1)

使用非常简单的正则表达式:

import re
lst = ['Ellie', 'Steve', 'Sam', 'Owen', 'Gavin']
for name in lst:
  if re.search('^[A-M]', name):
    print(name)

另外,请注意您的代码无法正常工作,因为它会接受任何位置的字母,而不仅仅是第一个字母。

答案 2 :(得分:0)

lst = ["Jonny","Samantha","Frank","Turtle","Robbie","Samuel Jackson"]
print "\n".join(filter(set("ABCDEFGHIJKLM").intersection,lst))

是一种方法

import functools
lst = ["Jonny","Samantha","Frank","Turtle","Robbie","Samuel Jackson"]
print "\n".join(filter(functools.partial(re.match,"[A-M]"),lst))

是确保其唯一第一个字母匹配的另一种方式

答案 3 :(得分:0)

我不确定这个问题值得回答,但是

lst = ['Ellie','Steve','Sam','Owen', 'Gavin', 'Bert', 'coLin', 'ZABCD', 'ellie']
charz = 'ABCDEFGHIJKLM'

for name in lst:
    if any(ch for ch in charz if name.startswith(ch)):
        print(name)

答案 4 :(得分:0)

您可以使用正则表达式查看第一个字母是否在A-M之间。

import re
lst = ['Ellie', 'Steve', 'Sam', 'Owen', 'Gavin']
for name in lst:
     a = re.compile("^([A-M]).*$")
     if a.match(lst):
          print (name)

在正则表达式中,我们基本上在字符串lst开始后检查[A-M]是否与AM^的模式匹配,其次是按.*,多次匹配任何字符(除了新行),直到字符串$结束。