首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的拆分函数

Python中的拆分函数
EN

Stack Overflow用户
提问于 2013-10-17 08:54:57
回答 5查看 374关注 0票数 0

我必须用Python编写一个程序,它要求用户输入一个字符串,并且只打印那些以"S“或"s”开头的单词。我使用.split函数来创建单词列表。然而,我很难弄清楚如何让Python识别那些以"S“或"s”开头的单词。如有任何建议或帮助,我们不胜感激!

EN

回答 5

Stack Overflow用户

发布于 2013-10-17 08:55:53

我使用字符串的.lower方法,如下所示:

代码语言:javascript
复制
>>> mystr = 'Super Sally rode a super ship.'
>>> [x for x in mystr.split() if x.lower()[0] == 's']
['Super', 'Sally', 'super', 'ship.']
>>>

您还可以使用.startswith方法,而不是对位置0处的字符串进行索引:

代码语言:javascript
复制
# This method, while longer, is really clear as to what's going on.
[x for x in mystr.split() if x.lower().startswith('s')]
票数 2
EN

Stack Overflow用户

发布于 2013-10-17 08:59:46

您可以将string的startswith方法与将字符串转换为全小写字母的lower方法结合使用。

代码语言:javascript
复制
words = raw_input().split()
for word in words:
    if word.lower().startswith('s'):
        # do something

当且仅当调用字符串以您作为参数传递给它的子字符串开头时,方法startswith才会返回True。

票数 2
EN

Stack Overflow用户

发布于 2013-10-17 09:02:03

借用@iCodez的奇妙的示例字符串--下面是一个正则表达式方法:

代码语言:javascript
复制
>>> import re
>>> mystr = 'Super Sally rode a super ship.'
>>> re.findall(r's\S+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship.']

这就省去了拆分字符串和显式标准化大小写以进行比较的麻烦。

此外,您还可以稍微调整它以不捕获不需要的标点符号,例如:

代码语言:javascript
复制
>>> re.findall(r's\w+', mystr, flags=re.I)
['Super', 'Sally', 'super', 'ship']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19416465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档