You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中正确读取含反斜杠的TXT文件并拆分内容

解决Python读取转义序列字符串并正确拆分的问题

你碰到的核心问题是:文件里存的是转义序列的字面写法(比如\x16是以四个独立字符\、x、1、6存储的),而不是已经解析好的控制字符/普通字符。直接读取拆分的话,Python只会把这些字符当成普通文本处理,所以才会得到那种零散的拆分结果。

下面给你两种可靠的解决方法:

方法1:用ast.literal_eval安全解析字符串字面量

这个方法是最安全的,因为ast.literal_eval只会解析合法的Python字面量,不会执行恶意代码,非常适合处理这种转义序列场景。

import ast

# 用with语句安全打开文件(自动处理关闭,避免资源泄漏)
with open(FileName, 'r', encoding='utf-8') as text_file:
    # 读取内容并去掉首尾可能的换行、空格
    raw_text = text_file.read().strip()

# 给原始文本套上双引号,让它变成一个合法的Python字符串字面量
# ast.literal_eval会自动解析里面的转义序列
parsed_string = ast.literal_eval(f'"{raw_text}"')

# 转成列表就是你要的结果
result = list(parsed_string)
print(result)

运行后输出就是你预期的:

['\x16', '\x07', '\x11', '\x10', '\x1c', '\x13', '\x0e', '\x07', '\x00', '4']

方法2:用codecs.escape_decode直接解码转义序列

如果你的文件内容全是这类\x开头的转义序列,也可以用codecs模块的专用方法来处理:

import codecs

with open(FileName, 'r', encoding='utf-8') as text_file:
    raw_text = text_file.read().strip()

# 先把字符串转成字节,再用escape_decode解析转义序列
decoded_bytes, _ = codecs.escape_decode(raw_text.encode('utf-8'))
# 用latin-1解码成字符(它能一对一映射所有字节到Unicode字符,不会丢失信息)
parsed_string = decoded_bytes.decode('latin-1')

result = list(parsed_string)
print(result)

为什么原来的方法行不通?

你之前直接读取后拆分,是因为Python读取到的是文件里的原始字符——比如\x16在文件里是4个独立的字符,而不是一个控制字符。所以拆分的时候自然会把每个字符单独拆出来,而不是识别成一个转义后的字符。

内容的提问来源于stack exchange,提问作者M.Marudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:47:04