【问题标题】:strip() works selectively on the input function but properly on a string literalstrip() 有选择地在输入函数上工作,但在字符串文字上正常工作
【发布时间】:2016-08-27 17:05:00
【问题描述】:

我正在尝试理解strip() 函数。而且我看到了一个令人困惑的行为。

import sys
test = input().strip('e')
print(test)

N = input().strip('cmowz.')
print(N)

print('www.example.com'.strip('cmowz.'))

这给出了以下输出:

test   message  here   
'www.example.com'
example

所以我看到的是调用input().strip() 方法可以正常工作于尾随和前导空格。但它不适用于其他任何东西。

input().strip('e') 并没有真正从字符串中删除 e。

但是,调用字符串文字 "somethinghere".strip('e') 可以正常工作。

有人能解释一下这种不一致的行为吗?

【问题讨论】:

  • 我无法重新创建这个; N = input().strip('cmowz.') 为我输出 'example'
  • Works as documented - 返回字符串的副本删除了前导和尾随字符

标签: python python-3.x strip


【解决方案1】:

来自documentation

返回删除了leadingtrailing 字符的字符串副本。如果省略 chars 或 None,则删除空白字符。如果给定而不是 None,chars 必须是字符串;字符串中的字符将从调用此方法的字符串的两端剥离。

这完全符合预期。

【讨论】:

  • 这是有道理的。基本上在第一种情况下,我输入“一些文本”,所以这里没有发生任何变化,因为 cmoz.不是空格的一部分。但是,在第二种情况下,我输入了字符串和单引号,这就是我看到奇怪输出的原因。我尝试不带单引号输入,它工作正常。将此问题标记为已回答。
【解决方案2】:

根据docs

string.strip(s[, chars]) 返回带有前导和的字符串的副本 删除了尾随字符。如果省略 chars 或 None,则为空格 字符被删除。如果给定而不是 None,chars 必须是字符串; 字符串中的字符将从两端剥离 调用此方法的字符串。

在 2.2.3 版中更改:添加了 chars 参数。字符 2.2之前的版本不能传参数。

重要的是,只删除尾随和前导字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多