以下是一些示例(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("\\")
,它根本不会改变字符串。
我看到了这个示例here,这让我觉得我需要创建字符串文字字符串(使用r
)。但是,我不知道如何将我的大型字符串列表转换为所有文字字符串。
当我搜索时,我得到here。但是,当我运行a.encode('latin-1').decode('utf-8')
时,我的编译器会抛出错误。它抛出的错误是'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)
所以,我的问题是:如何获取unicode字符串列表,以编程方式迭代它们并使它们成为字符串文字,然后拆分反斜杠?
答案 0 :(得分:3)
您有一个Unicode字符串,每个字符串元素已有一个Unicode代码点。 '\\'
只是打印到控制台的字符串的表示,它不是实际的内容。
要制作一个数字列表实际上非常简单:
split_a = [ord(c) for c in a]
如果你需要制作一串由字母u
后跟十六进制值组成的字符串,那只会稍微复杂一些:
split_a = ', '.join('u' + ('%04x' % ord(c)) for c in a)
答案 1 :(得分:1)
您可以使用unicode_escape
代码将unicode字符串转换为其转义表示形式。
split_a = a.encode('unicode_escape').split('\\')
输出:
['',
'u03c3',
'u03c4',
'u03b7',
'u03bd ',
'u03a0',
'u03bb',
'u03b1',
'u03c4',
'u03b5',
'u03af',
'u03b1 ',
'u03c4',
'u03bf',
'u03c5']