我必须用Python编写一个程序,它要求用户输入一个字符串,并且只打印那些以"S“或"s”开头的单词。我使用.split函数来创建单词列表。然而,我很难弄清楚如何让Python识别那些以"S“或"s”开头的单词。如有任何建议或帮助,我们不胜感激!
发布于 2013-10-17 08:55:53
我使用字符串的.lower方法,如下所示:
>>> mystr = 'Super Sally rode a super ship.'
>>> [x for x in mystr.split() if x.lower()[0] == 's']
['Super', 'Sally', 'super', 'ship.']
>>>您还可以使用.startswith方法,而不是对位置0处的字符串进行索引:
# This method, while longer, is really clear as to what's going on.
[x for x in mystr.split() if x.lower().startswith('s')]发布于 2013-10-17 08:59:46
您可以将string的startswith方法与将字符串转换为全小写字母的lower方法结合使用。
words = raw_input().split()
for word in words:
if word.lower().startswith('s'):
# do something当且仅当调用字符串以您作为参数传递给它的子字符串开头时,方法startswith才会返回True。
发布于 2013-10-17 09:02:03
借用@iCodez的奇妙的示例字符串--下面是一个正则表达式方法:
>>> import re
>>> mystr = 'Super Sally rode a super ship.'
>>> re.findall(r's\S+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship.']这就省去了拆分字符串和显式标准化大小写以进行比较的麻烦。
此外,您还可以稍微调整它以不捕获不需要的标点符号,例如:
>>> re.findall(r's\w+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship']https://stackoverflow.com/questions/19416465
复制相似问题