【问题标题】:Is there a way to make this code cleaner? I'm still learning Python. Thank you in advance. Without using Strip method有没有办法让这段代码更干净?我还在学习 Python。先感谢您。不使用 Strip 方法
【发布时间】:2021-05-23 17:52:43
【问题描述】:

此代码将删除前导和尾随空格、换行符和制表符。

def clean(message):
    while message[0] in '\n':
        message = message[1:]
    while message[0] in '\t':
        message = message[1:]
    while message[0] in ' ':
        message = message[1:]
    while message[-1] in '\t':
        message = message[:-1]
    while message[-1] in ' ':
        message = message[:-1]
    while message[-1] in '\n':
        message = message[:-1]
    while message[-1] in ' ':
        message = message[:-1]
    return message

【问题讨论】:

标签: python python-3.x string while-loop slice


【解决方案1】:

您可以使用strip。默认情况下 strip 删除所有空白字符,例如'\n''\t'' ',从头到尾。

def clean(message):
    return message.strip()

如果您想更明确一些,也可以使用message.strip('\n\t ')。您可以添加其他字符以从两端删除其他字符。

由于这是内置方法,它会比while循环快很多。


在 OP 的要求下不使用strip: 简单地结合一些while循环

def clean(message):
    while message[0] in '\n\t ':
        message = message[1:]
    while message[-1] in '\n\t ':
        message = message[:-1]
    return message

最好还是用index,这样就不用每次循环都修改message了。这种方式也更快。

def clean(message):
    start, end = 0, -1
    while message[start] in '\n\t ':
        start += 1
    while message[end] in '\n\t ':
        end -= 1
    return message[start:end]

【讨论】:

  • 啊,是的!我忘了提到没有使用 strip 方法。
  • 非常感谢!这看起来比我拥有的要好得多。
猜你喜欢
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2021-10-13
  • 2020-11-12
相关资源
最近更新 更多