隔离字符串中的字母并将其转换为列表

时间:2014-12-01 14:11:33

标签: python string list collections converter

我希望能够从输入中隔离字符串中的字母,并将它们作为包含4个单独的小写字符的集合返回。

这是我到目前为止所做的:

def main():
    original = input(str("Enter a 4-letter word: "))

    letters = isolate_letters(original)

def isolate_letters(original):
    letters = list(original.items())

    return letters
main()

3 个答案:

答案 0 :(得分:2)

>>> s = "1234"
>>> list(s)
['1', '2', '3', '4']

答案 1 :(得分:1)

您需要前4个小写字符:

letters = [c for c in original.lower() if c.isalpha()][:5]

首先将字符串转换为小写(lower()),然后从字符串(isalpha())中挑出所有字母字符,最后切掉前4([:5])< / p>

答案 2 :(得分:0)

我认为您要过滤ascii字母。如果没有,python字符串是可迭代的,因此对于大多数实际应用程序,字符串的行为就像一个列表 - 尝试只使用字符串就好像它是一个列表。

如果你想要所有的信件:

>>> import string
>>> original = "foo, bar, 2014"
>>> letters = [c for c in original if c in string.ascii_letters]
['f', 'o', 'o', 'b', 'a', 'r']

如果你想要它们而不重复:

>>> unique_letters = set(letters)
>>> unique_letters
{'a', 'b', 'f', 'o', 'r'}

[更新]

  

非常感谢!我是新来的python你有没有机会解释这是如何工作的?

嗯,string.ascii_letters包含:

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

我们正在使用Python列表推导,这是一种基于数学中set-builder notation的语法:

[item for item in some_list if condition]

几乎是简单的英语:如果条件为真,则返回some_list中的项目列表。在我们的例子中,我们使用in运算符测试字符是否为ascii字母。

Python中的set对象是一个无序列表,确保没有重复的项目。