Python打印/写入字符串包含“\f”

3
我正在尝试读取一个文件,并将每个"a ... a"替换为'\footnotemark'。
with open('myfile', 'r') as myfile:
   data = myfile.read()
   data = re.sub('<a.+?</a>', '\footnotemark', data)

不知道为什么 Python 总是把 '\footnotemark' 转化成 '\x0cootnotemark' ('\f' 转化成 '\x0c')。我尝试了以下方法:

  • 转义:'{2 Backslashes}footnotemark'
  • 原生字符串:r'\footnotemark' 或 r'"\footnotemark"'

但这些都没有起作用。

示例输入:

foo<a href="anything">asdasd</a> bar

例子输出:

foo\footnotemark bar

6
“\footnotemark” 翻译为中文是 “脚注标记”。 - Avinash Raj
这个给我 \\footnotemark - enzian
2
以上评论是正确的。Python解释器应该显示双\,因为它是repr函数的结果。 - Avinash Raj
@NanderSpeerstra \footnotemark 是一个 LATEX 命令,因此必须这样写。 - enzian
2
@LeoCHan: 不,那并不能正常工作。Avinash Raj原来的评论是正确的:r'\\footnotemark' 是所需的字符串;或者:'\\\\footnotemark'。这是因为需要两级转义,一级是Python本身,一级是正则表达式语法。另外,\f 是换页符控制字符。 - PM 2Ring
显示剩余3条评论
1个回答

3

假设使用的是Python2,因为你没有提及任何版本信息

#/usr/bin/python

import re

# myfile is saved with utf-8 encoding
with open('myfile', 'r') as myfile:

    text = myfile.read()
    print text
    data = re.sub('<a.+?</a>', r'\\footnotemark', text)

print data

输出

foo<a href="anything">asdasd</a> bar
foo\footnotemark bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接