ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python常见问题合集

2021-10-26 12:31:55  阅读:173  来源: 互联网

标签:常见问题 utf encoding Python json print csv 合集 row


目录

python open函数中的newline参数问题

python版本:2.6
用open函数打开csv文件,提示TypeError: 'newline' is an invalid keyword argument for this function。(newline是为了解决写入时新增行与行之间的一个空白行问题。)

  • 原因: python 2.6 open函数中无newline参数。python 3以上版本中会有newline这个参数。
  • 解决办法:open(‘xxx.csv’,'w') 改写为 open(‘xxx.csv’,'wb')

读写模式

r :只读
r+ : 读写
w : 新建(会对原有文件进行覆盖)
a : 追加
b : 二进制文件

常用的模式有:
"a" 以"追加"模式打开, (从 EOF 开始, 必要时创建新文件)
"a+" 以"读写"模式打开
"ab" 以"二进制 追加"模式打开
"ab+" 以"二进制 读写"模式打开

"w" 以"写"的方式打开
"w+" 以"读写"模式打开
"wb" 以"二进制 写"模式打开
"wb+" 以"二进制 读写"模式打开

"r+" 以"读写"模式打开
"rb" 以"二进制 读"模式打开
"rb+" 以"二进制 读写"模式打开

csv文档出现中文乱码

  • 解决办法:用记事本打开csv文件,另存编码为ANSI的csv文件,再用Excel打开csv文件,就会发现中文乱码问题已解决

换个角度,如果要Python读取csv文件时,正确识别到中文,就需要把csv文件编码格式utf-8格式。

Python读取中文字段出现乱码

用Python连接数据库后,打印中文字段,是乱码。
解决办法:

  • 方法1:在脚本开头添加注释 #encoding=utf-8
    #!usr/local/python/bin/python
    #encoding=utf-8
  • 方法2:导入json包,利用json.dumps(dict, encoding='utf-8',ensure_ascii=False
    import json
    json.dumps(变量名,encoding='utf-8',ensure_ascii=False
    例子:
dict={'name':'张三'}
print dict
print json.dumps(dict,encoding='utf-8',ensure_ascii=False)

list=[{'name':'张三'}]
print list
print json.dumps(list,encoding='utf-8',ensure_ascii=False)

row=SQL查询结果
print('{}').format(json.dumps(row,encoding='utf-8',ensure_ascii=False))
print'内容:%s'%(json.dumps(row,encoding='utf-8',ensure_ascii=False))
print(json.dumps(row,encoding='utf-8',ensure_ascii=False))
  • 方法3:开头设置默认编码
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
  • 方法4:当row是元组时,下面3行都可以成功打印出中文
print(row[0].decode('utf-8'))
print row[0]
print('{}').format(row[0])

标签:常见问题,utf,encoding,Python,json,print,csv,合集,row
来源: https://www.cnblogs.com/fylhd2013/p/15465173.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有