【问题标题】:Python: string.replace("\'","'") after reading txt filePython:读取txt文件后的string.replace("\'","'")
【发布时间】:2013-01-01 18:19:27
【问题描述】:

当打开和读取包含标记 ' 的文件时(就像在单词 should not 中一样),python 用 \' 替换它(最终是 should\'t)。我尝试运行以下代码:

a=open("file.txt")
b=a.read()
b=b.replace("\'", "'")

但是 b 在运行第三行后保持不变,可能是因为它读取“\'”就好像它是“'”。请帮忙。

【问题讨论】:

  • Python 不这样做。如果您打印它的表示形式(如果它还包含"s),它可能会显示这样的字符串,但它不会在实际数据中添加反斜杠。
  • 同意@Lattyware,刚刚用交互式python3解释器测试过,它根本不这样做......

标签: python string python-3.x


【解决方案1】:

你需要把斜线加倍:

b=b.replace("\\'", "'")

或使用r"" 原始字符串文字:

b=b.replace(r"\'", "'")

如果没有双斜杠或原始字符串文字,\' 将被解释为表示 ' 的空格代码。

使用转义码仔细检查您没有查看 python 表示 ' 字符的字符串表示:

>>> '"' + "'"
'"\''
>>> print '"' + "'"
"'

在上面的示例中,我创建了一个包含双引号和单引号字符 ("') 的字符串,Python 将其作为字符串表示形式回显给我。使用print 打印实际的字符串内容而不是表示。请注意 Python 是如何为我逃脱了 ' 的引用。

【讨论】:

    【解决方案2】:

    “\'”与“'”相同。反斜杠将 ' 转义,因此它不执行其特殊功能。如果您有一个单引号字符串,该功能很有用。 例如字符串 '"should\'t"' 打印为 "shouldn't"。

    Python 3.3.0 (default, Dec 22 2012, 21:02:07) 
    [GCC 4.7.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = 'shouldn't'
      File "<stdin>", line 1
        a = 'shouldn't'
                     ^
    SyntaxError: invalid syntax
    >>> a = 'shouldn\'t'
    >>> a
    "shouldn't"
    >>> a = '"shouldn\'t'
    >>> a
    '"shouldn\'t'
    >>> print(a)
    "shouldn't
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多