【问题标题】:Split Function in Python [closed]Python中的拆分函数[关闭]
【发布时间】:2013-10-17 00:54:57
【问题描述】:

我必须用 Python 编写一个程序,它要求用户输入一个字符串,它只打印出那些以“s”或“S”开头的单词。我正在使用.split 函数来创建单词列表。但是,我无法弄清楚如何让 Python 识别那些以“s”或“S”开头的单词。非常感谢任何建议或帮助!

【问题讨论】:

    标签: python text split


    【解决方案1】:

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

    words = raw_input().split()
    for word in words:
        if word.lower().startswith('s'):
            # do something
    

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

    【讨论】:

      【解决方案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')]
      

      【讨论】:

      • 我更喜欢x.lower().startswith("s")
      • @Claudiu - 大声笑。我只是在打字。 :)
      【解决方案3】:

      借用@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']
      

      【讨论】:

        【解决方案4】:

        使用startswith (http://docs.python.org/2/library/stdtypes.html#str.startswith)

        for x in your_string.split():
            if x.upper().startswith('S'):
                print x
        

        【讨论】:

          【解决方案5】:

          startswith 实际上需要一个元组。

          所以:

          words = raw_input()
          print [word for word in words.split() if word.startswith(('s', 'S'))]
          

          听起来很像英语,并且易于阅读。我更喜欢.lower()

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-19
            • 1970-01-01
            • 2022-01-19
            • 2020-05-21
            相关资源
            最近更新 更多