python - Python 不能正常使用回车符(新行)
问题描述
根据python的官方文档,3.x及以上版本删除了读取文件的“U”参数,并默认包含对不同回车的通用支持。但是,这不适用于最新版本(3.8.6)。
file1 = open('cube_demo.gcode', 'rt')
Lines = file1.readlines()
count = 0
for line in Lines:
print(line)
count += 1
我期望类似这样的输出:
G92 E0 ; reset extrusion distance
; Filament gcode
M104 S235
G1 Z0.250 F10800.000 ; move to next layer (0)
G1 E-7.00000 F3300.00000 ; retract
G92 E0 ; reset extrusion distance
但我得到:
G92 E0 ; reset extrusion distance
; Filament gcode
M104 S235
G1 Z0.250 F10800.000 ; move to next layer (0)
G1 E-7.00000 F3300.00000 ; retract
G92 E0 ; reset extrusion distance
为什么会这样?根据如何使用 Python 从文本文件中删除回车符?python 现在支持通用换行符。另外: PEP 278——通用换行支持
那么我错过了什么?我不想剥离任何东西,因为这需要我首先弄清楚每个文件使用哪个回车符。由于此脚本适用于每个操作系统,因此这是必需的。
那么如何让这种通用支持按预期工作呢?
很奇怪,我看到很多话题,和这个很相似。但实际上没有一个有 1:1 这个线程的目标。怎么会?例如,有些人想要删除所有换行符,有些人正在剥离。为什么没有人对不起作用的通用支持功能有任何问题?
解决方案
这样做的原因是readlines()返回按原样读取的行,这意味着返回的列表项还将包括末尾的新行:
>>> import io
>>> io.StringIO('line_1\nline_2').readlines()
['line_1\n', 'line_2']
第二个新行插入print()end='\n'
参数的默认值。
推荐阅读
- python - python如何在重定向后获得最终目的地
- tensorflow - 内核是否在 Conv1D 卷积中单独滑过每个时间维度?
- docker - docker compose up 工作正常,但无法访问显示站点的浏览器
- python - 使用inplace = True时如何在控制台上打印?
- javascript - message.guild.channels.find 不是函数
- java - 无法在休眠 Spring Boot 中的单个事务中保存父项和子项
- r - 基于逻辑列对复杂稀疏矩阵进行子集化
- ios - 如果我对搜索结果使用单独的数组,如何更新两个数组中的对象?
- javascript - Slack Bot 与 Bolt for JavaScript 和 OAuth 2.0 与其他工作区共享应用程序
- java - 如何使用spring boot在浏览器的单页中呈现多个文档