如何让CSV格式存储的文本内的\n被识别为换行符正常打印?
问题原因
CSV文件中存储的\n是字面量字符组合(实际存储内容为反斜杠+字母n),并非Python语法中被解析为换行控制符的转义字符。你直接在代码中定义列表时写的\n会被Python自动解析为真正的换行符,因此两者打印表现不一致。
解决方法
方案1:直接替换转义字符(推荐,性能高兼容性好)
如果仅需要处理\n换行,直接将读取到的字段中字面量\n替换为真实换行符即可,同时修正代码中的不规范写法:
import csv result = [] # csv读取官方推荐设置newline='',交由csv模块自行处理行分隔符,避免跨平台异常 with open('file.csv', 'r', encoding='utf-8', newline='') as f: reader = csv.reader(f, delimiter='|') for row in reader: # 逐个字段替换转义字符 processed_row = [field.replace(r'\n', '\n') for field in row] result.extend(processed_row) # 打印验证,Python3需给print加括号 for item in result: print(item)
方案2:统一解码所有转义字符
如果除了\n之外还有\t、\r等其他转义字符需要处理,可以使用unicode_escape做统一解码:
# 替换行内处理逻辑即可,其余代码不变 processed_row = [field.encode('utf-8').decode('unicode_escape') for field in row]
注意该方案如果处理包含大量非ASCII字符(如中文、emoji)的内容时,可能出现编码异常,仅转义字符较少时优先使用方案1。
内容的提问来源于stack exchange,提问作者Karan Hathwar
相关产品推荐
相关产品推荐

