相关疑难解决方法(0)

如何在python中解码非unicode字符?

s = 'Chocolate Moelleux-M\xe8re'当我在做的时候,我有一个字符串说:

In [14]: unicode(s)
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 20: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

类似地,当我试图通过使用s.decode()它来解码它时返回相同的错误.

In [13]: s.decode()
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 20: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如何将这样的字符串解码成unicode.

python unicode

5
推荐指数
1
解决办法
5723
查看次数

从 Pandas 的字符串列中删除非 ASCII 字符

我有多列的熊猫数据框,其中混合了值和不需要的字符。

columnA        columnB    columnC        ColumnD
\x00A\X00B     NULL       \x00C\x00D        123
\x00E\X00F     NULL       NULL              456
Run Code Online (Sandbox Code Playgroud)

我想做的是使这个数据框如下。

columnA  columnB  columnC   ColumnD
AB        NULL       CD        123
EF        NULL       NULL      456
Run Code Online (Sandbox Code Playgroud)

使用下面的代码,我可以从 columnA 中删除 '\x00' 但 columnC 很棘手,因为它在某些行中与 NULL 混合。

col_names = cols_to_clean
fixer = dict.fromkeys([0x00], u'')
for i in col_names:
if df[i].isnull().any() == False:
    if df[i].dtype != np.int64:
            df[i] = df[i].map(lambda x: x.translate(fixer))
Run Code Online (Sandbox Code Playgroud)

有什么有效的方法可以从 columnC 中删除不需要的字符?

python string dataframe pandas

5
推荐指数
1
解决办法
4379
查看次数

删除csv文件中的非ascii字符

我目前正在使用csv文件在我的django模型中插入数据.下面是一个使用的简单保存功能:

def save(self):
myfile = file.csv
data = csv.reader(myfile, delimiter=',', quotechar='"')
i=0
for row in data:
    if i == 0:
        i = i + 1
        continue    #skipping the header row        

    b=MyModel()
    b.create_from_csv_row(row) # calls a method to save in models
Run Code Online (Sandbox Code Playgroud)

该功能与ascii字符完美配合.但是,如果csv文件有一些非ascii字符,则会引发错误:UnicodeDecodeError'ascii'编解码器无法解码位置1526中的字节0x93:序号不在范围内(128)

我的问题是:如何在保存我的csv文件之前删除非ascii字符以避免此错误.

提前致谢.

python csv django converter

4
推荐指数
1
解决办法
9795
查看次数

检测unicode字符串中的非ascii字符

给定一个文本文件(或unicode字符串),检测不在ascii编码之外的字符的好方法是什么?我可以很容易地迭代传递每个角色ord(),但我想知道是否有更高效,优雅或惯用的方式来做到这一点.

这里的最终目标是编译无法编码为ascii的数据中的字符列表.

如果重要,我的语料库大小约为500MB/1200文本文件.在Win7(64位)上运行(预编译的vanilla)Python 3.3.1.

python unicode python-3.x

3
推荐指数
1
解决办法
8574
查看次数

Windows Python:使用语言环境模块更改编码

使用 Python 2.7

我正在编写一个抽象的网页抓取工具,但在显示(打印)某些字符时遇到了问题。

我收到回溯错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\u2606' in position 5: ordinal not in range(128)从打印包含该字符的字符串。

我使用语言环境模块来找出我的操作系统支持的设置,虽然我不确定我是否应该使用语言环境来解决我的问题,并注意到默认设置(en_US', 'cp1252'). 我正在尝试将其更改为('en_US', 'utf-8')但遗憾的是无济于事。

#code for default settings
print locale.getdefaultlocale()
Run Code Online (Sandbox Code Playgroud)

这是我用来缩小语言环境设置选项的代码。(这里没有问题,代码只是让任何想要的人都可以跟随)

import locale
all = locale.locale_alias().items()
utfs = [(k,v) for k,v in all if 'utf' in k.lower() or 'utf' in v.lower()]

# utf settings starting with en
en_utfs = [(k,v) for k,v in utfs if k.lower()[:2].lower() == 'en' or 
            v.lower()[:2] == 'en'

print en_utfs
Run Code Online (Sandbox Code Playgroud)

这给出了输出:

[('en_ie.utf8@euro', …
Run Code Online (Sandbox Code Playgroud)

python encoding locale utf-8 setlocale

3
推荐指数
1
解决办法
5350
查看次数