【问题标题】:Python: Iterate over string with while loopPython:使用while循环迭代字符串
【发布时间】:2013-09-09 00:45:06
【问题描述】:

我正在尝试删除最后一次出现“+”后字符串末尾的所有字符。例如,如果我的字符串是“Mother+why+is+the+river+laughing”,我想将其简化为“Mother+why+is+the+river”。不过我不知道字符串会是什么。

我想过在字符串上向后迭代。比如:

while letter in my_string[::-1] != '+':
    my_string = my_string[:-1]

这不起作用,因为未预先定义输入的字母。

有什么想法吗?

【问题讨论】:

  • 要快速回答您的问题,您不需要letterwhile my_string[-1] != '+': 就足够了。不过,基于 rfind 和 rsplit 的答案更好。

标签: python string while-loop


【解决方案1】:

只需使用str.rsplit():

my_string = my_string.rsplit('+', 1)[0]

.rsplit() 从字符串的 end 拆分;限制为 1,它只会在字符串中的最后一个 + 处拆分,[0] 会为您提供最后一个 + 之前的所有内容。

演示:

>>> 'Mother+why+is+the+river+laughing'.rsplit('+', 1)[0]
'Mother+why+is+the+river'

如果字符串中有no+,则返回原字符串:

>>> 'Mother'.rsplit('+', 1)[0]
'Mother'

至于你的循环;您正在针对反转字符串进行测试,并且条件返回True,直到最后一个+ 被删除;您必须在循环中测试 以了解您刚刚删除的字符:

while True:
    last = my_string[-1]
    my_string = my_string[:-1]
    if last == '+':
        break

但这与使用str.rsplit() 相比效率相当低;为每个删除的字符创建一个新字符串的成本很高。

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2017-12-14
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多