Python程序读取文本文件拼接行时输出\n而非换行的问题排查
解决Python拼接文本行时显示
\n而非实际换行的问题 嘿,我瞅见你遇到的问题了——用readlines()读取文件后,输出里总带着\n转义字符,没法实际换行显示,对吧?这其实是两个小细节没处理好,咱们一步步改过来:
问题1:strip()方法没真正生效
Python里字符串是不可变的,i.strip('\n')会返回一个去掉换行符的新字符串,但你没把这个新值重新赋值给i,导致原来带\n的字符串还是被塞进列表里了。得把处理后的结果存回去才行。
问题2:直接打印字典会显示转义字符
字典默认的打印格式会用repr()输出内容,所以\n会变成转义字符而不是实际换行。如果想让内容换行展示,得自己循环字典来输出。
另外,顺便提个最佳实践:别直接用open()后不关闭文件,用with语句能自动帮你关掉文件,避免资源泄漏。
修改后的完整代码
def user1(): # 用with语句安全读取密码文件,同时处理换行符 with open('password.txt', 'r') as file: passwords = [line.strip('\n') for line in file.readlines()] # 同样处理用户文件 with open('user.txt', 'r') as rfile: users = [line.strip('\n') for line in rfile.readlines()] # 拼接成字典 user_pwd_dict = dict(zip(users, passwords)) # 循环打印每个键值对,实现换行显示 for username, password in user_pwd_dict.items(): print(f"{username}: {password}") user1()
代码改进说明
- 用列表推导式简化了代码,同时直接把每行的换行符去掉,一步到位
with语句确保文件读取完成后自动关闭,不用手动写file.close()- 循环遍历字典的键值对打印,这样每个用户-密码组合都会单独占一行,不会显示
\n转义字符
内容的提问来源于stack exchange,提问作者kiko
相关产品推荐
相关产品推荐

