Python-字符串-防止转义

1 问题引入

最近在做xml解析、可视化时遇到一个问题:将字符串(文件路径)中的转义字符不进行转义123\tabc,正常print会将\t看作转义字符tab,需求是使字符串按原样输出。下面是不同场景下的解决方法:

2 字符串常量

如果是字符串常量,则在字符串前加r 即可:

1
2
3
4
print("123\tabc")
# 123 abc
print(r"123\tabc") # test_str = r"123\tabc"
# 123\tabc

3 字符串变量

如果字符串是变量,使用 repr() 方法:

1
2
3
4
5
6
str1 = "123\tabc"
str2 = repr(str1)

print(str1) # 123 abc
print(str2) # '123\tabc'
print(str2.strip("\'")) # 123\tabc

注意:字符串使用 repr 函数后输出是会在字符串前后自动加上单引号(见print第二行),print第三行是去掉了字符串首尾的单引号。关于strip函数,详见博客

4 文件读取

1
2
3
file1 = open("test.txt", "r")  # 123\tabc

print(file1.read()) # 123\tabc

文本文件读取测试发现字符串未发生转义。

拓展阅读:关于python中open函数读取和写入windows记事本的换行问题研究

X 参考