【问题标题】:Python isalpha giving wrong resultsPython isalpha 给出错误的结果
【发布时间】:2021-07-08 12:50:41
【问题描述】:
with open("text.txt") as f:
       for line in f:
         line.isalpha()
 
False

文件只有一行,内容为: “ABC”

【问题讨论】:

  • 检查行尾的换行符和空格字符。 line.strip().isalpha() 应该返回 True
  • 是的,哇!它给出了“真实”。为什么要剥离()?即使文件中只有 1 行,我们也需要剥离吗?
  • 您的文件中不仅有一行。 strip() 将删除行首和行尾的所有空格,因此也会删除换行符。最后没有换行符的文件将返回True
  • 非常感谢!

标签: python-3.x file-handling isalpha


【解决方案1】:

我认为这是因为“abc”内容后面有一个空格

【讨论】:

  • 不,没有。我已经检查过了,没有空格。
  • @MuhammadIdreesHassan 你确定也没有换行符吗?
  • 我的错,我不知道每行末尾都有换行符。使用 strip() 给出了正确的结果。谢谢!
【解决方案2】:

据我所知,文件行通常由换行符 \n 终止,这就是为什么 isalpha() 返回 false 的原因。

【讨论】:

    【解决方案3】:

    正如其他人指出的,它必须是文件中的其他一些字符;可能是 "\n" 用于行终止,或其他一些。

    简而言之,您想删除这些字符。试试:

    line.strip().isalpha()
    

    下面有完整的解释。

    加载数据:

    with open("text.txt") as f:
           for line in f:
             line.isalpha()
    

    行的输出是:

    >>> line
    'abc\n'
    

    当然isalpha() 的结果是假的:

    >>> print(line.isalpha())
    False
    

    但是,删除\n 会得到正确的结果:

    >>> line.strip()
    'abc'
    >>> line.strip.isalpha()
    True
    

    (要解决此问题,您可能只想在解释器中输出该行,而不使用print 语句,否则您将看不到'\n' 的特殊字符)

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 2012-08-30
      • 1970-01-01
      • 2021-04-18
      • 2014-09-16
      • 1970-01-01
      • 2011-11-15
      • 2019-02-06
      • 2014-01-30
      相关资源
      最近更新 更多