有很多关于 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?
为什么 json.dumps() 将表情符号编码为 unicode?请参阅下面的代码和输出:
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
我正在尝试解析 CSV 文件(来自外部数据源),其中其中一列使用不一致的字符编码。我不想尝试让数据提供者使用一致的编码,而是只想将该列读取为二进制数据。然而,pandas.read_csv似乎在解析之前将整个文件解码为字符串,因此这给了我错误(UnicodeDecodeError)。这是一个玩具示例(python 3):
>>> 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\nRun 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\'\nRun Code Online (Sandbox Code Playgroud)\n\n … 我正在测试功能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) 我正在尝试从 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) 我想忽略我的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) 我有以下代码使用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) 昨天我写了以下内容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,但是我无法使用。也许可以
我有一个字典,其中包含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源获取的,所以我猜想有些东西在路上搞砸了.
我有一个QTextEdit我想要设置一些由ASCII Art文本渲染器生成的文本(unicode).一切都很好,除了QTextEdit扭曲文本.屏幕截图显示了在QTextEditvia中设置的相同unicode文本变量setText()并记录到控制台,在该控制台中正确显示.
如果我使用QTextEdit或QPlainTextEdit,或者如果我通过setText(ascii_art_text)或设置文本似乎并不重要setPlainText(ascii_art_text).我在这里使用PySide,但我怀疑在这种情况下并不太感兴趣.
任何想法如何解决这种扭曲?
python-unicode ×10
python ×8
unicode ×6
utf-8 ×3
csv ×1
dictionary ×1
file-io ×1
lxml ×1
netezza ×1
pandas ×1
pyodbc ×1
pyside ×1
python-3.x ×1
qtextedit ×1
sqlalchemy ×1
xml ×1