我正在尝试读取一个包含简体中文信息的CSV文件,并将其编码为请求放入数据库中。
我的代码部分:
#coding:utf-8
import csv, sys, urllib, urllib2
with open('testdata1.csv', 'rU') as f:
reader = csv.reader(f)
try:
z = csv.reader(f, delimiter='\t')
for row in reader:
print row[0]
if row[0] in (None, ""):
continue
elif row[0] == '家长姓':
print row[0]然而,我遇到了两个问题:
1) Sublime Text无法识别中文字符,也就是它无法理解在命令elif row[0] == '家长姓'中查找'家长姓‘。
2) Sublime Text似乎不能打印中文字符(当我告诉它打印某些信息时,所有的中文字符都被下划线取代)。
我已经尝试了File>Save with Encoding>UTF-8,但没有效果。任何帮助都将不胜感激。
发布于 2015-12-11 17:00:47
尝试使用适当编码的codecs打开文件:
>>> import codecs
>>> f = codecs.open("testdata1.csv", "r", "utf-8") 发布于 2015-12-11 18:15:57
非ASCII字符总是很难使用,因为有3个不同的问题:
# -*- coding: ... -*-)sys.encoding>F29>首先,您的代码行忘记了-*-,这意味着一些编辑器可能无法正确处理编码。
您也可以尝试空闲编辑器是否更容易处理中文字符。
但不管怎样,如果其他方法都失败了,你总是可以使用显式的unicode代码:
>>> txt = u'家长姓' # only works if editor and interpretor were correctly declared the source encoding
>>> txt2 = u'\xe5\xae\xb6\xe9\x95\xbf\xe5\xa7\x93' # works on any system
>>> txt == txt2
TrueTL/DR:如果在Python源代码中使用非ASCII字符有问题,请使用它们的转义代码
发布于 2017-06-27 10:53:35
您代码中的'家长姓'是一个<type 'str'>,您从其中读取的内容也是一个<type 'str'>,但可能它们的编码方法不是same.You可以在比较之前将它们解码为<type 'unicode'>。
例如:
row[0].decode('utf-8') == u'家长姓'下面是一个关于str和unicode的测试:
test = '你好'
test1 = u'你好'
print type(test)
print type(test1)
print test == test1
print type(test.decode('utf-8'))
print test.decode('utf-8') == test1输出:
<type 'str'>
<type 'unicode'>
False
<type 'unicode'>
Truehttps://stackoverflow.com/questions/34219505
复制相似问题