我知道u“字符串”是指Unicode。如果我没记错的话,这就是我遇到的问题。我找不到一个最终可以帮助我将字符串分成2个字符串的解决方案,如果该字符串内部有'\ u'。
我有一个用“ \”除的字符串列表,其中第一部分是犯罪,第二部分是犯罪发生的位置。
例如:
SHOPLIFT, NE MILL PL
VANDALISM, 136TH AVE NE
SUSPICIOUS CIRCUMSTANCES, GARDEN WAY
MENTAL PROBLEMS, NE WOODINVILLE DUVALL RD
TRESPASS – 19200 BLK 168TH AVE NE
当我使用data.split(',')时,我得到以下结果:
[u'SHOPLIFT', u' NE MILL PL ']
[u'VANDALISM', u' 136TH AVE NE ']
[u'SUSPICIOUS CIRCUMSTANCES', u' GARDEN WAY ']
[u'MENTAL PROBLEMS', u' NE WOODINVILLE DUVALL RD ']
[u'TRESPASS \u2013 19200 BLK 168TH AVE NE ']
如您所见,split方法在前4个项目中效果很好。第五项:
[u'TRESPASS \u2013 19200 BLK 168TH AVE NE ']
是我遇到的问题。
如何拆分该项目,使其显示以下内容:
[u'TRESPASS', u'2013 19200 BLK 168TH AVE NE ']
split('–')也不起作用
TRESPASS – 19200 BLK 168TH AVE NE
出现以下错误:
'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
谢谢。
答案 0 :(得分:1)
您看到的\ u2013告诉您“这是Unicode字符2013”(恰好是一个长破折号)。您可以在原始打印字符串中的“侵入”之后看到。听起来您想基于逗号或长破折号来分割字符串。
一种解决方案是将长破折号转换为逗号,然后在逗号上分割:
data.replace(u'\u2013',',').split(',')
第二种解决方法是使用re.split()
import re
re.split(u"[\,\u2013]", data)