我希望能够从输入中隔离字符串中的字母,并将它们作为包含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()
答案 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
对象是一个无序列表,确保没有重复的项目。