标签: python-unicode

Python 3.6,utf-8 到 unicode 的转换,带双反斜杠的字符串

有很多关于 utf-8 > unicode 转换的问题,但我仍然没有找到我的问题的答案。

让我们有这样的字符串:

a = "Je-li pro za\\xc5\\x99azov\\xc3\\xa1n\\xc3\\xad"
Run Code Online (Sandbox Code Playgroud)

Python 3.6 理解这个字符串就像Je-li pro za\xc5\x99azov\xc3\xa1n\xc3\xad。我需要将此类似 utf-8 的字符串转换为 unicode 表示形式。最终的结果应该是Je-li pro za?azování。

随着a.decode("utf-8")我得到AttributeError: 'str' object has no attribute 'decode',因为 Python 意味着该对象已经被解码。

如果我先用 将它转换为字节bytes(a, "utf-8"),反斜杠只会加倍并再次.decode("utf-8")将其返回到我当前的状态a。

如何获得unicode字符串济利亲咱?azování从这个a?

unicode utf-8 python-3.x python-unicode

2
推荐指数
1
解决办法
5114
查看次数

Python json.dumps() 没有正确编码表情符号

为什么 json.dumps() 将表情符号编码为 un​​icode?请参阅下面的代码和输出:

import json
obj = {"key": "hello "}
print(obj)
Run Code Online (Sandbox Code Playgroud)

{'key': '你好'}

print(json.dumps(obj))
Run Code Online (Sandbox Code Playgroud)

'{"key": "你好 \ud83d\ude00"}'

我已经尝试过print(json.dumps(obj)).encode('utf-8')一些变体(.decode()...),但它并没有太大改变输出。我正在使用 Python 3.6.1

python unicode python-unicode

2
推荐指数
1
解决办法
2615
查看次数

在 pandas 中加载带有二进制数据的 CSV 文件

我正在尝试解析 CSV 文件(来自外部数据源),其中其中一列使用不一致的字符编码。我不想尝试让数据提供者使用一致的编码,而是只想将该列读取为二进制数据。然而,pandas.read_csv似乎在解析之前将整个文件解码为字符串,因此这给了我错误(UnicodeDecodeError)。这是一个玩具示例(python 3):

\n\n
>>> from io import BytesIO\n>>> import pandas as pd\n>>> csv = b\'Encoding,Data\\nascii,abc\\nwindows-1252,\\xae\\nutf-8,\\xe2\\x80\\x9c1\\xe2\\x80\\x9d\\n\'\n>>> pd.read_csv(BytesIO(csv))\nTraceback (most recent call last):\n  File "pandas/_libs/parsers.pyx", line 1130, in pandas._libs.parsers.TextReader._convert_tokens\n  File "pandas/_libs/parsers.pyx", line 1254, in pandas._libs.parsers.TextReader._convert_with_dtype\n  File "pandas/_libs/parsers.pyx", line 1269, in pandas._libs.parsers.TextReader._string_convert\n  File "pandas/_libs/parsers.pyx", line 1459, in pandas._libs.parsers._string_box_utf8\nUnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xae in position 0: invalid start byte\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要一个与此等效的结果:

\n\n
>>> df = pd.DataFrame({\'Encoding\': [\'ascii\',\'windows-1252\',\'utf-8\'],\n...                    \'Data\': [b\'abc\',b\'\\xae\',b\'\\xe2\\x80\\x9c1\\xe2\\x80\\x9d\']})\n>>> df\n       Encoding                          Data\n0         ascii                        b\'abc\'\n1  windows-1252                       b\'\\xae\'\n2         utf-8  b\'\\xe2\\x80\\x9c1\\xe2\\x80\\x9d\'\n
Run Code Online (Sandbox Code Playgroud)\n\n …

python csv pandas python-unicode

2
推荐指数
1
解决办法
1万
查看次数

打印 unicode 字符名称 - 例如 'GREEK SMALL LETTER ALPHA' - 而不是 '?'

我正在测试功能isprintable()。我想打印 string 中所有字符的 Unicode NAMES string.whitespace + unicodedata.lookup("GREEK SMALL LETTER ALPHA")。

如何打印所有名称 - 例如“SPACE”、“NO-BREAK SPACE”、“HORIZONTAL TAB”、“GREEK SMALL LETTER ALPHA”。

import unicodedata, string

for e in string.whitespace + unicodedata.lookup("GREEK SMALL LETTER ALPHA"):
    print(ord(e))
    print(unicodedata.name(e))
Run Code Online (Sandbox Code Playgroud)

我收到错误“ValueError:没有这样的名字”

32
SPACE
9
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
ValueError: no such name
Run Code Online (Sandbox Code Playgroud)

python unicode python-unicode

2
推荐指数
1
解决办法
106
查看次数

得到??将 Netezza 与 Python 连接时作为 unicode 字符的输出

我正在尝试从 Netezza 数据库访问 python 代码中的 unicode(中文、日语等)字符。对于连接,我使用了 Netezza odbc 驱动程序和 sqlalechmy,以及 netezza 中的一个表,其中有一个 nvarchar 类型的列,其中包含中文字符。使用 python 代码访问该汉字时,输出为 ?? 而不是实际数据。

表有两列,一列是数据类型 id,另一列是数据类型 nvarchar:

id(int)  Data(nvarchar)
1        ??
2        ??
3        ??
Run Code Online (Sandbox Code Playgroud)

连接代码:

id(int)  Data(nvarchar)
1        ??
2        ??
3        ??
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy pyodbc netezza python-unicode

2
推荐指数
1
解决办法
76
查看次数

使用python和lxml忽略xml中的unicode?

我想忽略我的xml中的unicode。我愿意以某种方式在输出处理中进行更改。

我的python:

import urllib2, os, zipfile 
from lxml import etree

doc = etree.XML(item)
docID = "-".join(doc.xpath('//publication-reference/document-id/*/text()'))
target = doc.xpath('//references-cited/citation/nplcit/*/text()')
#target = '-'.join(target).replace('\n-','')
print "docID:    {0}\nCitation: {1}\n".format(docID,target) 
outFile.write(str(docID) +"|"+ str(target) +"\n")
Run Code Online (Sandbox Code Playgroud)

创建以下内容的输出:

docID:    US-D0607176-S1-20100105
Citation: [u"\u201cThe birth of Lee Min Ho's donuts.\u201d Feb. 25, 2009. Jazzholic. Apr. 22, 2009 <http://www
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试重新添加,则'-'join(target).replace('\n-','')对于print和都会出现此错误outFile.write:

Traceback (most recent call last):
  File "C:\Documents and Settings\mine\Desktop\test_lxml.py", line 77, in <module>
    print "docID:    {0}\nCitation: {1}\n".format(docID,target)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' …
Run Code Online (Sandbox Code Playgroud)

python xml unicode lxml python-unicode

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

Python:为什么我得到UnicodeDecodeError?

我有以下代码使用RE搜索文件,如果找到任何匹配项,则将文件移动到不同的目录中.

import os
import gzip
import re
import shutil

def regEx1():
    os.chdir("C:/Users/David/myfiles")
    files = os.listdir(".")
    os.mkdir("C:/Users/David/NewFiles")
    regex_txt = input("Please enter the string your are looking for:")
    for x in (files):
        inputFile = open((x), "r")
        content = inputFile.read()
        inputFile.close()
        regex = re.compile(regex_txt, re.IGNORECASE)
        if re.search(regex, content)is not None:
            shutil.copy(x, "C:/Users/David/NewFiles")
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误消息:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python33\Lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 367: …
Run Code Online (Sandbox Code Playgroud)

python file-io python-unicode

1
推荐指数
1
解决办法
2万
查看次数

unicode和python问题(访问unicde代码图表)

昨天我写了以下内容function转换integer为Persian:

def integerToPersian(number):
    listedPersian = ['?','?','?','?','?','?','?','?','?','?']
    listedEnglish = ['0','1','2','3','4','5','6','7','8','9']    
    returnList = list()

    listedTmpString = list(str(number))

    for i in listedTmpString:
        returnList.append(listedPersian[listedEnglish.index(i)])

    return ''.join(returnList)
Run Code Online (Sandbox Code Playgroud)

当你调用它,如:integerToPersian(3455),它return ????, ????就相当于3455在Persian和Arabic language。当你看一个数字,如阅读databae,并希望显示widget,这 function是非常有用的。

我从http://unicode.org下载codes charts 了,因为我需要写,因为它应该作为参数存储,所以我是pytho中的新手。unicodePersianToInteger('unicodeString')utf-8utf-82 bytes

我的问题是,如何存储2bytes?,如何utf8存储,如何将一个拆分unicode string为另一种格式?怎么用unicode code charts?

注意:我发现使用int() built-in fuinction,但是我无法使用。也许可以

python unicode utf-8 unicode-string python-unicode

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

UTF-8字符串作为字典中的键导致KeyError

我有一个字典,其中包含unicode字符串作为键.当我尝试访问该值时,我得到键错误,即使字典和我的键中的键的打印输出相等:

>>> test = "Byggår"
>>> key = raw_dict.keys()[7]
>>> print(test)
Byggår
>>> print(key)
Byggår
>>> test
'Bygg\xc3\xa5r'
>>> key
u'Bygg\xe5r'
>>> raw_dict[test]
Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd_exec.py", line 3, in Exec
  File "<input>", line 1, in <module>
KeyError: 'Bygg\xc3\xa5r'
Run Code Online (Sandbox Code Playgroud)

看起来它们的编码方式不同,不知何故.从实验开始,似乎字典中的关键字被编码为八进制字节(?)http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=xc3+xa5&mode=obytes,同时我尝试访问该值的密钥编码为十六进制(?)http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=xe5&mode=hex.

字典中的键是从Web源获取的,所以我猜想有些东西在路上搞砸了.

python unicode dictionary utf-8 python-unicode

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

QTextEdit中的文本失真

我有一个QTextEdit我想要设置一些由ASCII Art文本渲染器生成的文本(unicode).一切都很好,除了QTextEdit扭曲文本.屏幕截图显示了在QTextEditvia中设置的相同unicode文本变量setText()并记录到控制台,在该控制台中正确显示.


QTextEdit扭曲文本


如果我使用QTextEdit或QPlainTextEdit,或者如果我通过setText(ascii_art_text)或设置文本似乎并不重要setPlainText(ascii_art_text).我在这里使用PySide,但我怀疑在这种情况下并不太感兴趣.


任何想法如何解决这种扭曲?

pyside qtextedit python-unicode

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