[英]How can I slice a substring from a unicode string with Python?
结果我有一个unicode字符串: u'splunk>\\xae\'
如何获得子字符串“ uf001”
作为python中的简单字符串?
字符uf001
实际上不存在于字符串中,因此您不能仅将它们切掉。 你可以做
repr(s)[-6:-1]
要么
'u' + hex(ord(s[-1]))[2:]
由于您需要实际的字符串(从注释中看到),因此只需获取最后一个字符[-1] index
,示例-
>>> a = u'splunk>\xae\uf001'
>>> print(a)
splunk>®ï€
>>> a[-1]
'\uf001'
>>> print(a[-1])
ï€
如果要使用unicode表示形式( \
),请使用repr(a[-1])
,示例-
>>> repr(a[-1])
"'\\uf001'"
\
是单个unicode字符(而不是多个字符串),因此您可以如上所述直接获取该字符。
之所以会看到\
是因为您正在检查字符串上repr()
的结果,如果打印它,或者在其他地方使用它(如文件等),它将是正确的\
字符。
u''
这就是在Python源代码中表示Unicode字符串的方式。 默认情况下,REPL使用此表示形式来显示unicode对象:
>>> u'splunk>\xae\uf001'
u'splunk>\xae\uf001'
>>> print(u'splunk>\xae\uf001')
splunk>®
>>> print(u'splunk>\xae\uf001'[-1])
如果您的终端未配置为显示Unicode,或者您的构建版本较窄(例如Windows上的Python 2很有可能),则结果可能会有所不同。
Unicode字符串是Python中Unicode代码点的不可变序列。 len(u'\') == 1
:其中不包含uf001
(5个字符)。 您可以将其写为u''
(如果使用非ascii字符,则必须在Python 2上声明源文件的字符编码):
>>> u'\uf001' == u''
True
这是表示完全相同的Unicode字符(在这种情况下为单个代码点)的另一种方式。
注意:某些用户可感知的字符可能跨越多个 Unicode代码点,例如:
>>> import unicodedata
>>> unicodedata.normalize('NFKD', u'ё')
u'\u0435\u0308'
>>> print(unicodedata.normalize('NFKD', u'ё'))
ё
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.