【问题标题】:How Do I Do 'Words Starting With' in Python?我如何在 Python 中做“以”开头的单词?
【发布时间】:2017-11-23 00:49:11
【问题描述】:

标题应该是不言自明的,但举个例子:

runny=input(print("do you run or stay?"))
if runny in ["run", "Run", " run", " Run", "run ", "Run ", " run ", " Run "]:

我只是想知道我是否可以说'if runny stars with char (r) 之类的? 谢谢!

【问题讨论】:

    标签: python string string-comparison


    【解决方案1】:

    您可以转换输入以减少搜索空间。

    1. 小写字母
    2. 删除尾随空格

    if 'run' in runny.lower():
        # do something
    

    或者,完全匹配:

    if 'run' == runny.lower().strip():
        # do something
    

    您也可以使用str.startswith,但要注意误报:

    if runny.lstrip().lower().startswith('run'):
        # do something
    

    如果您需要考虑 个字符之间的空格或更复杂的模式,您应该使用正则表达式。

    【讨论】:

    • 所以我假设 'runny.lower()' 将答案转换为小写,而 '.strip()' 去除空格,它们是否应该像这样连接?同样从上面的答案中,如果我要使用正则表达式,您能否帮助解释一下这段代码到底是做什么的 'if re.match(r"(\s|^)run(\s|$)",runny, flags=re.I):'?
    • @QuestionedE 是的,因为字符串方法返回新的转换字符串,因此您可以链接字符串方法调用。不能这样做,比如列表或字典。
    • @COLDSPEED 谢谢!以防万一您没有看到我的编辑(对不起)“if re.match(r"(\s|^)run(\s|$)",runny,flags=re.I):" 到底是做什么的如果我要使用正则表达式?
    • @QuestionedE 您应该明白,当您的问题如此简单时,正则表达式是最糟糕的使用方法。有一种说法...如果您使用正则表达式来解决问题...您有两个问题。 :p
    • 您不需要strip 来搜索in!它永远不会有帮助!
    【解决方案2】:

    您不需要在input 中运行print 函数。你最终打印了一个额外的None。接下来,您应该为此使用正则表达式,因为它更易于维护。

    import re
    runny=input("do you run or stay? ")
    if re.match(r"\brun\b",runny,flags=re.I):
        print("You're running!")
    else:
        print("You're not running.")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      相关资源
      最近更新 更多