首页 新闻 会员 周边 捐助

为什么 Python(以及几乎所有编程语言)在按行读取文件时默认保留换行符 \n

0
[已关闭问题] 关闭于 2025-12-06 20:24

兼容不同操作系统的换行约定

  • Unix/Linux: \n
  • Windows: \r\n
  • 旧 Mac: \r

Python 在文本模式下会自动将这些转换为 \n(通用换行模式),但仍然保留它,因为:

  • 它代表“此处有一行结束”;
  • 用户可以选择是否保留、替换或去除。
  • 明确性:保留行边界信息,避免歧义(如空行);
*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1258
提问于:2025-12-06 20:18
< >
分享
所有回答(1)
0

 

server = nginx

port = 8080
timeout = 30


第1行:"server = nginx\n"
第2行:"\n" ← 这是一个空行
第3行:"port = 8080\n"
第4行:"timeout = 30\n"


with open('config.txt') as f:
    lines = f.readlines()
print([repr(line) for line in lines])


[
 'server = nginx\n',
 '\n',               # ← 明确表示“这里有一行,内容为空”
 'port = 8080\n',
 'timeout = 30\n'
]


👉 你能清晰知道:

总共 4 行;
第 2 行是空行('\n');
如果你要跳过空行,可以写:
Python
编辑
for line in lines:
    if line.strip() == '': 
        continue  # 跳过空行


那么 readlines() 返回:

Python
编辑
[
 'server = nginx',
 '',                 # ← 这是空行去掉了 \n
 'port = 8080',
 'timeout = 30'
]


中间的 \n 表示“一个独立的空行”,可能是为了视觉分隔;
如果你只看到 '',你知道它是“有意的空行”还是“数据缺失”吗?
保留 \n 就等于保留了原始作者的排版意图。

line.lstrip()去掉左边空白,包括左边是换行符,这种"\naaa"
换行符统一是"\n",strip之后就变成空字符串""

>>> bool("")空字符串默认是假
False
>>> bool("\n") 而"\n"是真
True
>>> bool(" ")
True

 

# 处理空行时,'\n'.lstrip() 会移除换行符,变成空字符串 ''
fo.write('')会是什么?这个可以过滤空行

 fo.write('')  会什么都不写入,文件大小为0,空 。

 

 

*Tesla* | 园豆:1258 (小虾三级) | 2025-12-06 20:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册