簡體   English   中英

如何在python中將unicode字符串轉換為文字字符串?

[英]How to convert a unicode string to a literal string in Python?

以下是一些示例(unicode)字符串:

a = u'\u03c3\u03c4\u03b7\u03bd \u03a0\u03bb\u03b1\u03c4\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5'
b = u'\u010deprav so mu doma\u010di in strici duhovniki odtegovali denarno pomo\u010d . Kljub temu mu je uspelo'
c = u'sovi\xe9ticas excepto Georgia , inclusive las 3 rep\xfablicas que hab\xedan'

我的最終目標是分割反斜杠(和空格),使其看起來像這樣:

split_a = [u03c3, u03c4, u03b7, u03bd, ,u03a0, u03bb, u03b1, u03c4, u03b5, u03af, u03b1, ,u03c4, u03bf, u03c5]
split_b = ['', 'u010deprav', 'so', 'mu', 'doma', 'u010di', 'in', 'strici',  'duhovniki' odtegovali denarno pomo', 'u010d', '.', 'Kljub', 'temu', 'mu', 'je', 'uspelo']
split_c = ['sovi', 'xe9ticas', 'excepto', 'Georgia', ',', 'inclusive', 'las', '3',  'rep', 'xfablicas', 'que', 'hab', 'xedan']

(在有空格和反斜杠的空白處完全可以)。

當我嘗試使用此方法拆分時:

a.split("\\\\") ,它根本不會更改字符串。

我在這里看到了這個示例,這使我認為我需要將字符串設置為文字字符串(使用r )。 但是,我不知道如何將大量字符串轉換為所有文字字符串。

當我進行搜索時,我來到了這里 但是,運行a.encode('latin-1').decode('utf-8')時,編譯器會引發錯誤。 它引發的錯誤是'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)

因此,我的問題是:如何獲取unicode字符串列表,以編程方式遍歷它們,並使它們成為字符串文字,然后在反斜杠上進行拆分?

您有一個Unicode字符串,每個字符串元素已經有一個Unicode代碼點。 '\\\\'只是打印到控制台的字符串的表示形式,而不是實際的內容。

列出其中的數字實際上很容易:

split_a = [ord(c) for c in a]

如果您需要制作一串由字母u和十六進制值組成的字符串,那只會稍微復雜一點:

split_a = ', '.join('u' + ('%04x' % ord(c)) for c in a)

您可以使用unicode_escape代碼將unicode字符串轉換為其轉義的表示形式。

split_a = a.encode('unicode_escape').split('\\')

輸出:

['',
 'u03c3',
 'u03c4',
 'u03b7',
 'u03bd ',
 'u03a0',
 'u03bb',
 'u03b1',
 'u03c4',
 'u03b5',
 'u03af',
 'u03b1 ',
 'u03c4',
 'u03bf',
 'u03c5']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM