Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python解码还是正则表达式?_Python_Regex_Unicode - Fatal编程技术网

Python解码还是正则表达式?

Python解码还是正则表达式?,python,regex,unicode,Python,Regex,Unicode,我有一个dict是从网络上刮下来的,但是它伴随着这个unicode问题: {'track': [u'\u201cAnxiety\u201d', u'\u201cLockjaw\u201d [ft. Kodak Black]', u'\u201cMelanin Drop\u201d', u'\u201cDreams\u201d', u'\u201cIntern\u201d', u'\u20

我有一个
dict
是从网络上刮下来的,但是它伴随着这个
unicode
问题:

{'track': [u'\u201cAnxiety\u201d',
           u'\u201cLockjaw\u201d [ft. Kodak Black]',
           u'\u201cMelanin Drop\u201d',
           u'\u201cDreams\u201d',
           u'\u201cIntern\u201d',
           u'\u201cYou Don\u2019t Think You Like People Like Me\u201d',
           u'\u201cFirst Day Out tha Feds\u201d',
           u'\u201cFemale Vampire\u201d',
           u'\u201cGirlfriend\u201d',
           u'\u201cOpposite House\u201d',
           u'\u201cGirls @\u201d [ft. Chance the Rapper]',
           u'\u201cI Am a Nightmare\u201d']}
使用
regex
,或者有什么
解码
方法,哪种方法是去除这些字符的最佳方法

怎么说呢?

这些是引语(“和”)。如果您只想在字符串的开头或结尾除去它们,则最简单的方法是
除去它们

>>> u'\u201cAnxiety\u201d'.strip(u'\u201c\u201d')
u'Anxiety'
如果要清除字符串中的任何位置,请使用
替换
它们:

>>> u'\u201cAnxiety\u201d'.replace(u'\u201c', '').replace(u'\u201d', '')
u'Anxiety'
更好的可读性解决方案(在我看来):

快速解释:
dict['track']
,是
a
字典中唯一的第一个值,是字符串列表,每个字符串都有不必要的
u'\u201c'
u'\u201d'
。 我们在Python中使用它来遍历该列表,对于该列表中的每个字符串,
x
将其
u'\u201c'
u'\u201d'
替换为空白字符串
'
,这会使它们消失

如果您的字典中有多个值,或除
'track'
之外的其他键,并且希望使此代码更通用,并适用于具有任何键名称的每个字典,我们可以迭代字典中的值,并将上述代码应用于字典的所有值:

for k,v in dict.items():
    dict[k] = [x.replace(u'\u201c', '').replace(u'\u201d', '') for x in v]

这些是左引号和右引号。是否确实要从数据中删除所有带卷引号的字符?或者可以用常规引号替换:
u'\u201cAnxiety\u201d'.replace(u'\u201c',“”).replace(u'\u201d',“”)
@elethan Yes,这也是一个有趣的想法。解释一下你的答案如何解决这个问题会很有用。虽然这个代码片段可以解决这个问题,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。希望现在更好。
dict['track'] = [x.replace(u'\u201c', '').replace(u'\u201d', '') for x in dict['track']]
for k,v in dict.items():
    dict[k] = [x.replace(u'\u201c', '').replace(u'\u201d', '') for x in v]