[英]convert character to unicode
此代碼按預期工作。 唯一的問題是,如果有unicode字符,它將轉換為ASCII。
with open('test.idx', 'w') as writefile:
with open('test.dat') as myfile:
mystr=myfile.read()
for myword in mystr.split('|'):
tow=myword, '|', mystr.index(myword)
print >>writefile, tow
In [74]: !cat test.dat
UTF-8
जनन|1
जन्म देणे
शिक्षण|1
क्षेत्रातील संशोधनाच्या बाजारीकरणा बाबतीत व्यक्त केलेली
पूर्व|1
पगड्यामुळे
In [75]: !cat test.idx
('UTF-8\n\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xa8', '|', 0)
我希望看到unicode而不是轉義代碼。
你創建了一個元組:
tow=myword, '|', mystr.index(myword)
這不是一個字符串對象,它是一個包含三個其他對象的元組,其中兩個是字符串,一個是整數。
然后,當您將該元組寫入文件時,Python必須將其轉換為字符串。 轉換任何Python容器(無論是元組,列表,集合還是字典)都將使用所包含對象的repr()
表示。 對於字符串,這意味着只允許和顯示可打印的ASCII字符,其他所有字符都使用轉義序列,通常是\\xhh
表單。
如果您的用例輸出不正確,則需要自己進行字符串轉換。 您可以使用字符串格式:
tow = '{}|{}'.format(myword, mystr.index(myword))
如果你正在生產很多|
- 分離數據,您可能需要查看csv
模塊來處理分隔符和文件寫入。
當您將數據存儲在元組中時,您將看到repr表示。 要匹配您的預期輸出,請使用str.join:
print >>writefile, "".join(map(str,tow))
輸出文件將包含:
UTF-8
जनन|0
1
जन्म देणे
शिक्षण|16
1
क्षेत्रातील संशोधनाच्या बाजारीकरणा बाबतीत व्यक्त केलेली
पूर्व|63
1
पगड्यामुळे|239
如果在代碼中添加print(tow)
,您將看到有元組。
('UTF-8\n\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xa8', '|', 0)
('1\n\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xae \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xa3\xe0\xa5\x87\n\xe0\xa4\xb6\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa4\xa3', '|', 16)
('1\n \xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x87\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa5\x80\xe0\xa4\xb2 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb6\xe0\xa5\x8b\xe0\xa4\xa7\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\x95\xe0\xa4\xb0\xe0\xa4\xa3\xe0\xa4\xbe \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xac\xe0\xa4\xa4\xe0\xa5\x80\xe0\xa4\xa4 \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xa4 \xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa5\x80 \n\xe0\xa4\xaa\xe0\xa5\x82\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5', '|', 63)
('1\n \xe0\xa4\xaa\xe0\xa4\x97\xe0\xa4\xa1\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa5\x81\xe0\xa4\xb3\xe0\xa5\x87', '|', 239)
你也有utf-8編碼的字符串而不是unicode,如果你從tow中打印出單個元素,你也會看到正確的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.