浅谈python中对于json写入txt文件的编码问题

最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unicode编码的格式。

接下来就是各种翻阅文档,查找谷歌和度娘,但是都没有具体的说明是什么问题。

结果根据自己的代码发现,原来是一句代码写到后面去了。

name = json.dumps('中国你好', ensure_ascii=False) #重点就是这一句代码
date = time.strftime('%Y-%m-%d', time.localtime(time.time())) #此处是时间转换
f = codecs.open(date + '.txt', 'a', 'utf-8')
f.write('%s\n\n' % name)
f.close() 

分析 json.dumps('中国你好')

'中国你好' 是ascii 字符码,而不是真正的中文。

这是因为json.dumps 序列化时对中文默认使用的ascii编码

想输出真正的中文需要指定ensure_ascii=False

json.dumps中可以放置json字符串,但是也必须指定ensure_ascii=False

json.dumps : dict转成str

以上这篇浅谈python中对于json写入txt文件的编码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python编码总结(编码类型、格式、转码)

    本文详细总结了python编码.分享给大家供大家参考,具体如下: [所谓unicode] unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.也就是它只是一种内部表示,不能直接保存.所以存储时需要规定一种存储形式,比如utf-8和utf-16等.理论上unicode是一种能够容纳全世界所有语言文字的编码方案.(其他编码格式不再多说) [所谓GB码] GB就是"国标"的意思,即:中华人民共和国国家标准.GB码是面向汉字的编码,包括

  • Python 查看文件的编码格式方法

    在读取中文的情况下,通常会遇到一些编码的问题,但是首先需要了解目前的编码方式是什么,然后再用decode或者encode去编码和解码,下面是使用chardet库来查看编码方式的. import chardet path = "E:/t.csv" #path = "E:/t.zip" f = open(path,'rb') data = f.read() print(chardet.detect(data)) 打印结果如下: {'encoding': 'GB2312'

  • Python实现按特定格式对文件进行读写的方法示例

    本文实例讲述了Python实现按特定格式对文件进行读写的方法.分享给大家供大家参考,具体如下: #! /usr/bin/env python #coding=utf-8 class ResultFile(object): def __init__(self, res): self.res = res def WriteFile(self): fp = open('pre_result.txt', 'w') print 'write start!' try: for item in self.re

  • python指定写入文件时的编码格式方法

    实例如下: #encoding=utf-8 content=u"广东松炀再生资源股份有限" content=content.encode("utf-8")#写入的文件编码格式为utf-8 with open("testbianma.txt","w")as f: f.write(content) 以上这篇python指定写入文件时的编码格式方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python批量修改文件编码格式的方法

    本文实例为大家分享了python批量修改文件编码格式的具体代码,供大家参考,具体内容如下 使用说明: 1.使用工具:Python2.7.6+chardet2.3.0,chardet2.3.0下载地址:点击这里 2.环境配置:Python安装+配置环境变量,chardet解压放在Python安装目录\Lib\site-packages下 举例:批量修改当前路径下所有.cpp文件的编码格式为UTF-8,代码如下: python: import os import sys import codecs

  • python 设置文件编码格式的实现方法

    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码.(python3已经没有这个问题了,python3默认的文件编码是UTF-8) 必须将编码注释放在第一行或者第二行,一般来说,Python文件的前两行要这样写: #!/usr/bin/python # -*- coding: UTF-8 -*- 其中第一行是指定python解释器,第二行是指定python文件编码方式,设置编码方式有以下可选的方法 1. 带等号的设置方法:

  • 浅谈python中对于json写入txt文件的编码问题

    最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unicode编码的格式. 接下来就是各种翻阅文档,查找谷歌和度娘,但是都没有具体的说明是什么问题. 结果根据自己的代码发现,原来是一句代码写到后面去了. name = json.dumps('中国你好', ensure_ascii=False) #重点就是这一句代码 date = time.strftime('%Y-%m-%d', time.localtime(ti

  • 浅谈Python中的异常和JSON读写数据的实现

    异常可以防止出现一些不友好的信息返回给用户,有助于提升程序的可用性,在java中通过try ... catch ... finally来处理异常,在Python中通过try ... except ... else来处理异常 一.以ZeroDivisionError为例,处理分母为0的除法异常 def division(numerator,denominator): result=numerator/denominator return result ret1=division(1,5) prin

  • 浅谈python中str字符串和unicode对象字符串的拼接问题

    str字符串 s = '中文' # s: <type 'str'> s是个str对象,中文字符串.存储方式是字节码.字节码是怎么存的: 如果这行代码在python解释器中输入&运行,那么s的格式就是解释器的编码格式: 如果这行代码是在源码文件中写入.保存然后执行,那么解释器载入代码时就将s初始化为文件指定编码(比如py文件开头那行的utf-8): unicode对象字符串 unicode是一种编码标准,具体的实现可能是utf-8,utf-16,gbk等等,这就是中文字符串和unicod

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • 浅谈python中copy和deepcopy中的区别

    在下是个编程爱好者,最近将魔爪伸向了Python编程.....遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy). 首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响. 然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数. 一.字典数据类型的copy函数

  • 浅谈python中列表、字符串、字典的常用操作

    列表操作如此下: a = ["haha","xixi","baba"] 增:a.append[gg] a.insert[1,gg] 在下标为1的地方,新增 gg 删:a.remove(haha) 删除列表中从左往右,第一个匹配到的 haha del a.[0] 删除下标为0 对应的值 a.pop(0) 括号里不写内容,默认删除最后一个,写了,就删除对应下标的内容 改:a.[0] = "gg" 查:a[0] a.index(&q

  • 浅谈Python中函数的参数传递

    1.普通的参数传递 >>> def add(a,b): return a+b >>> print add(1,2) 3 >>> print add('abc','123') abc123 2.参数个数可选,参数有默认值的传递 >>> def myjoin(string,sep='_'): return sep.join(string) >>> myjoin('Test') 'T_e_s_t' >>>

  • 浅谈python中的面向对象和类的基本语法

    当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个坑是如此之大,犹豫再三,还是只捡一下重要的内容来讲吧,不足的内容只能靠大家自己去补充了. 惯例声明一下,我使用的版本是 python2.7,版本之间可能存在差异. 好,在开讲之前,我们先思考一个问题,看代码: 为什么我只创建是为 a 赋值,就可以使用一些我没写过的方法? 可能会有小伙伴说:因为 a

  • 浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: >>> hasattr(list, 'append') True >>> hasattr(list, 'add') False getattr(object,name,default): 作用:返回object的名称为name的属性的属性值,如果属性name存在,则直接返回其

  • 浅谈python中的数字类型与处理工具

    python中的数字类型工具 python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括: 1.整数与浮点型, 2.复数, 3.固定精度十进制数, 4.有理分数, 5.集合, 6.布尔类型 7.无穷的整数精度 8.各种数字内置函数及模块. 基本数字类型 python中提供了两种基本类型:整数(正整数金额负整数)和浮点数(注:带有小数部分的数字),其中python中我们可以使用多种进制的整数.并且整数可以用有无穷精度. 整数的表现形式以十进制数字字符串写法出现,浮点数带

随机推荐