远离笨比术 2022-05-05 23:03 采纳率: 72.4%
浏览 19
已结题

python简单问题,\n与字符串连接存入json文件,文件是乱码,这是咋回事

问题遇到的现象和发生背景

输入内容之后打印出来是这样的:
"username list:""\n\u2014\u2014james""\n\u2014\u2014cally""\n\u2014\u2014lucy""\n\u2014\u2014lily""\n\u2014\u2014dawn"
\n\u2014\u2014这个前缀是个啥玩意

问题相关代码,请勿粘贴截图

存储用户的名字在json程序里
filename='username.json'
contents='username list:'
with open(filename,'w') as f:
json.dump(contents,f)
while True:
guest_name=input("Please input your name:")
if guest_name == 'quit':
break
else:
guest_name=f"\n——{guest_name}"
filename='username.json'
with open(filename,'a') as f:
json.dump(guest_name,f)

尝试过的方法

我把guest_name=f"\n——{guest_name}"里面的斜杠删了
输出结果又变成 "\nkayy""\ncan""\nsandy"这样前面带\n,\n没发挥作用

我想要达到的结果

无前缀的正常形式

  • 写回答

1条回答 默认 最新

  • mengyoufengyu 2022-05-05 23:24
    关注

    1.\u2014\u2014 是你代码中{guest_name}前面的两个中文字符“——”的编码
    2.json输出的就是转为\n,不会真正换行的,不然json的格式就乱了,例如面的格式就不正确
    {name:"Tom
    Xiaoli",
    age:18
    }
    应该是:
    {name:"Tom\nXiaoli",
    age:18
    }
    3. 如果不想显示\u2014, 可以修改为json.dump(guest_name,f, ensure_ascii=False)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月5日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分