关于 python2 字符串变量转义的问题,求教

2017-08-23 17:12:12 +08:00
 vicker

各位大牛好,有个问题一直很困惑,求指点!!! 假设我现在有一字符串如下

input[0]: print '\xd2\xbb'

output[0]: һ

直接输出这个字符串,会出现 h 形状的符号,这是我预期的输出

现在我将 '\xd2\xbb' 写入文件中, file.txt

\xd2\xbb

当我读取 file.txt 时,

with open('file.txt') as f:
    tmp = f.read()
print tmp

output[1]: \xd2\xbb

可以看到,python2 在读取文件的时候,将\ 进行了 转义变成了\ 进行输出,并没有直接输出 h 形状的符号 问题:怎么能让让 python2 直接将读取的字符串不通过转义输出呢? 求各位大牛指点,需求是我需要保留文件中这个 h 符号放到函数中进行调用。

1823 次点击
所在节点    Python
4 条回复
Patrick95
2017-08-23 18:25:08 +08:00
为什么不直接把 h 符号写入文件呢?

https://gist.github.com/FaithPatrick/1186d5c24695ce2bc738e8331f147123
jingniao
2017-08-23 18:56:28 +08:00
python 中 str 类型,字面 ‘\xd2\xbb'发生了转义,实际上内存中存储的可以看作 2 个 8 位无符号整形,这个字符串长度在 python2 中是 2
你写到文件里的\xd2\xbb 是 8 个字符,字符串长度为 8 ……
vicker
2017-08-28 09:46:08 +08:00
@Patrick95 感谢帮助~~ 当时从文件中获取出来的是\xd2\xbb 这种格式,所以比较纠结,不过后来解决是通过,打开文件的编码格式, codecs.open('file.txt', 'r', encoding='string_escape'),这样引用出来的变量会变成双字节字符
vicker
2017-08-28 09:47:40 +08:00
@jingniao 感谢帮助,前两天一直困扰的问题,在解决之后都看通了,最后通过用 string_escape 编码绕过实现了需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX