我清理了400个excel文件并使用pandas将它们读入python并将所有原始数据附加到一个大df中.
然后,当我尝试将其导出到csv时:
df.to_csv("path",header=True,index=False)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc7' in position 20: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
有人可以建议一种方法来解决这个问题及其意义吗?
谢谢
好吧,因为标题表明我遇到的问题是正确地从python中的Windows-1252编码文件中读取输入并将所述输入插入到SQLAlchemy-MySql表中.
当前系统设置:
带有"Roger访问控制系统"的Windows 7 VM,用于输出文件;
Ubuntu 12.04 LTS VM具有Windows系统的共享文件夹,因此我可以使用"Python 2.7.3"访问该文件.
现在针对实际问题,对于输入文件,我有一个"VM共享文件夹",其中包含通过Roger访问控制系统(roger.pl获取更多详细信息)在Windows 7系统上生成的文件,此文件称为" PREvents.csv"暗示它的内容,";" 分离的数据清单.
数据的示例格式:
2013-03-19;15:58:30;100;J?nis;Dumburs;1;Uznemums1;0;Ieeja;
2013-03-19;15:58:40;100;J?nis;Dumburs;1;Uznemums1;2;Izeja;
Run Code Online (Sandbox Code Playgroud)
第4个字段包含卡所有者名称,第5个字段包含所有者姓氏,第6个字段包含所有者分配的组.
问题来自于上述3个字段中的任何一个都可以包含特定于拉脱维亚语言的字符,在示例文件中,单词"Jānis"包含字母"ā",其在unicode中为257.
就像我习惯的那样,我打开文件:
try:
f = codecs.open(file, 'rb', 'cp1252')
except IOError:
f = codecs.open(file, 'wb', 'cp1252')
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常 - 它打开文件,所以我继续迭代文件的每一行(这是一个连续运行脚本,所以原谅循环):
while True:
line = f.readline()
if not line:
# Pause loop for 1 second
time.sleep(1)
else:
# Split the line into list
date, timed, userid, firstname, lastname, groupid, groupname, typed, pointname, empty = line.split(';')
Run Code Online (Sandbox Code Playgroud)
这就是问题开始的地方,如果我print repr(firstname)打印的话u'J\xe2nis',就我而言,不正确 - "\ xe2 \"不代表拉脱维亚字符"ā". …
我正在尝试的是读取一个csv来创建一个数据帧---在列中进行更改---再次更新/反映更改的值到相同的csv(to_csv) - 再次尝试读取该csv以生成另一个数据帧...我收到一个错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
我的代码是
import pandas as pd
df = pd.read_csv("D:\ss.csv")
df.columns #o/p is Index(['CUSTOMER_MAILID', 'False', 'True'], dtype='object')
df['True'] = df['True'] + 2 #making changes to one column of type float
df.to_csv("D:\ss.csv") #updating that .csv
df1 = pd.read_csv("D:\ss.csv") #again trying to read that csv
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
所以请建议我如何避免错误并能够再次将该csv读取到数据帧.
我知道某处我在读取和写入csv时缺少"encode = some codec type"或"decode = some type".
但我不知道到底应该改变什么.所以需要帮助.
当我.lower()在Python 2.7中使用时,字符串不会转换为小写字母Š?Ž.我从字典中读取数据.
我试过用str(tt["code"]).lower(),tt["code"].lower().
有什么建议 ?
我正在尝试编码和解码希伯来字符串"שלום".然而,编码后,我得到了胡言乱语:
>>> word = "????"
>>> word = word.decode('UTF-8')
>>> word
u'\u05e9\u05dc\u05d5\u05dd'
>>> print word
????
>>> word = word.encode('UTF-8')
>>> word
'\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'
>>> print word
?©??•?
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
谢谢.
我正在编写一个python程序,用一个收集的表情符号unicode设置判断表情符号.在测试过程中,我发现有一个表情符号,以?作为一个例子,有两个Unicode,u'\u2601'并且u'\u2601\ufe0f',这是什么\ufe0f意思?如果我删除它是否相同?
在尝试获取微小玩具数据集的直方图时,来自numpy的奇怪错误来自matplotlib.我只是不确定如何解释错误,这使得很难看到下一步该做什么.
虽然这个nltk问题和这个gdsCAD问题在表面上是相似的,但没有找到太多相关内容.
我打算在底部调试信息比驱动程序代码更有帮助,但如果我错过了什么,请询问.这可以作为现有测试套件的一部分重现.
if n > 1:
return diff(a[slice1]-a[slice2], n-1, axis=axis)
else:
> return a[slice1]-a[slice2]
E TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U1') dtype('<U1') dtype('<U1')
../py2.7.11-venv/lib/python2.7/site-packages/numpy/lib/function_base.py:1567: TypeError
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> py2.7.11-venv/lib/python2.7/site-packages/numpy/lib/function_base.py(1567)diff()
-> return a[slice1]-a[slice2]
(Pdb) bt
[...]
py2.7.11-venv/lib/python2.7/site-packages/matplotlib/axes/_axes.py(5678)hist()
-> m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs)
py2.7.11-venv/lib/python2.7/site-packages/numpy/lib/function_base.py(606)histogram()
-> if (np.diff(bins) < 0).any():
> py2.7.11-venv/lib/python2.7/site-packages/numpy/lib/function_base.py(1567)diff()
-> return a[slice1]-a[slice2]
(Pdb) p numpy.__version__
'1.11.0'
(Pdb) p matplotlib.__version__
'1.4.3'
(Pdb) a
a …Run Code Online (Sandbox Code Playgroud) 我注意到以下情况:
>>> u'abc' == 'abc'
True
>>> 'abc' == u'abc'
True
Run Code Online (Sandbox Code Playgroud)
这总是正确的还是可能取决于系统区域设置?(似乎字符串在python 3中是unicode:例如这个问题,但2.x中的字节)
这段代码:
for root, dirs, files in os.walk('.'):
print(root)
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcc3' in position 27: surrogates not allowed
Run Code Online (Sandbox Code Playgroud)
如何在没有像这样的有毒字符串的情况下浏览文件树?
我在django_countries国家列表中使用模块,问题是有几个国家有特殊字符'Åland Islands'和'Saint Barthélemy'.
我正在调用此方法来获取国家/地区名称:
country_label = fields.Country(form.cleaned_data.get('country')[0:2]).name
Run Code Online (Sandbox Code Playgroud)
我知道country_label是django utils的懒惰翻译代理对象,但它没有给出正确的名称,而是给出了它'Ã…land Islands'.对此有何建议?
python-unicode ×10
python ×9
unicode ×3
pandas ×2
python-2.7 ×2
utf-8 ×2
cp1252 ×1
django ×1
emoji ×1
lowercase ×1
matplotlib ×1
numpy ×1
python-3.x ×1
windows-1252 ×1