【问题标题】:how to remove 'ing' from any word如何从任何单词中删除“ing”
【发布时间】:2019-08-21 08:02:07
【问题描述】:

我需要从包含 ing 的单词的末尾删除 ing。如果一个单词中没有 ing,那么什么都不做,打印出来。

我尝试了一些使用 input 和 word 的代码,但它们不起作用。

wrd = input("Word: ")
print(wrd - "ing")

【问题讨论】:

    标签: python string input slice word


    【解决方案1】:

    如果您有弹跳或唱歌之类的词,请使用re

    import re
    wrd = input("Word: ")
    print(re.sub("ing$", "", wrd))
    

    【讨论】:

    • 想试试“赢”这个词吗?
    • 您应该删除答案中的rstrip 部分。错了。
    • @U10-Forward:删除第一个解决方案,任何包含“i”或“n”或“g”的单词都是错误的,它们不是荒谬的极端情况。
    • @MatteoItalia 已被删除!
    【解决方案2】:

    这是另一种方法:

    >>> wrd = input("Word: ")
    Word: wording
    >>> print(wrd[:-3] if wrd[-3:] == "ing" else wrd)
    'word'
    >>> 
    

    这只会删除字符串末尾的ing

    原始代码:

    print(wrd[:-3] if wrd[-3:] == "ing" else wrd)
    

    这是一些时间测试:

    import timeit
    import re
    
    wrd = "counting timeing"
    
    def method1():
        re.sub("ing$", "", wrd)
    
    def method2():
        wrd[:-3] if wrd.endswith('ing') else wrd
    
    def method3():
        wrd[:-3] if wrd[-3:] == "ing" else wrd
    
    print(timeit.timeit(method1))
    print(timeit.timeit(method2))
    print(timeit.timeit(method3))
    

    我的输出是:

    2.3050724
    0.3981412
    0.37868440000000003

    所以我回答的方法3是最快的

    【讨论】:

    • @ComplicatedPhenomenon 我已经通过了粗略的测试。完美运行
    • 为什么要@ComplicatedPhenomenon
    • @ComplicatedPhenomenon 很可能你测试的方式不对
    • @ComplicatedPhenomenon 我的测试给出了 6.688556291999703 1.11655900599726 1.1157615970005281 但是黑雷的解决方案还是快了一点,让我们说你们两个时间非常接近
    • @ComplicatedPhenomenon “我只是怀疑你的说法”这意味着你说你总是赢,那是怎么回事?
    【解决方案3】:
    print(x[:-3] if x.endswith('ing') else x )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2018-05-26
      • 2020-01-28
      • 2019-10-27
      • 2015-06-23
      • 2011-02-02
      相关资源
      最近更新 更多