我必须用 Python 编写一个程序,它要求用户输入一个字符串,它只打印出那些以“s”或“S”开头的单词。我正在使用该.split
函数来创建单词列表。但是,我无法弄清楚如何让 Python 识别那些以“s”或“S”开头的单词。非常感谢任何建议或帮助!
问问题
376 次
5 回答
2
您可以将字符串的方法与将字符串转换为全小写字母的方法startswith
结合使用。lower
words = raw_input().split()
for word in words:
if word.lower().startswith('s'):
# do something
startswith
当且仅当调用字符串以您作为参数传递给它的子字符串开头时,该方法才会返回 True。
于 2013-10-17T00:59:45.607 回答
2
我会使用这样.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-17T00:55:52.743 回答
1
借用@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']
于 2013-10-17T01:02:02.910 回答
0
使用startswith
(http://docs.python.org/2/library/stdtypes.html#str.startswith)
for x in your_string.split():
if x.upper().startswith('S'):
print x
于 2013-10-17T00:58:29.573 回答
0
startswith
实际上需要一个元组。
所以:
words = raw_input()
print [word for word in words.split() if word.startswith(('s', 'S'))]
听起来很像英语,而且很容易阅读。我更喜欢它.lower()
于 2013-10-17T08:40:55.867 回答