使用python从json unicode字典中删除\ n \ n和其他不需要的字符

时间:2016-05-02 10:25:36

标签: json python-2.7 dictionary unicode strip

我已经尝试了几种不同的解决方案来解决我的问题,其中一些"搞笑"我的json字典中的换行符,但没有一个有效,所以我想我可以发帖子。通过抓取网站来实现字典。

我有一个json字典:

my_dict = {
    u"Danish title": u"Avanceret", 
    u"Course type": u"MScTechnol",
    u"Type of":  u"assessmen",
    u"Date": u"\nof exami",
    u"Evaluation": u"7 step sca",
    u"Learning objectives": u"\nA studen",
    u"Participants restrictions": u"Minimum 10",
    u"Aid": u"No Aid",
    u"Duration of Course": u"13 weeks",
    u"name": u"Advanced u",
    u"Department": u"31\n",
    u"Mandatory Prerequisites": u"31545",
    u"General course objectives": u"\nThe cour",
    u"Responsible": u"\nMartin C",
    u"Location": u"Campus Lyn",
    u"Scope and form": u"Lectures, ",
    u"Point( ECTS )": u"10",
    u"Language": u"English",
    u"number": u"31548",
    u"Content": u"\nThe cour",
    u"Schedule": u"F4 (Tues 1"
}

我已将值内容剥离到[:10]以减少混乱,但某些值的长度为300个字符。它可能没有在这里描绘得很好,但有些值中有很多换行符,我已经尝试了很多不同的解决方案来删除它们,例如str.stripstr.replace但是没有成功,因为我的价值观'是 unicode 。值我的意思是key, value in my_dict.items()

如何删除字典中出现的所有换行符? (由于某些新行正在落后,因此值得关注,有些是领先的,有些则位于内容的中间:e.i \nI have a\ngood\n idea\n)。

修改

我正在使用 Python v.2.7.11 ,而下面的代码并没有产生我需要的东西。我希望将所有换行符更改为单个空白字符。

for key, value in test.items():
    value = str(value[:10]).replace("\n", " ")
    print key, value

3 个答案:

答案 0 :(得分:1)

如果您尝试删除除数字或字母之外的所有\n或任何垃圾字符,请使用正则表达式

for key in my_dict.keys():
    my_dict[key] = mydict[key].replace('\\n', '')
    my_dict[key] = re.sub('[^A-Za-z0-9 ]+', '', my_dict[key])
print my_dict

如果你希望保留与它们不同的东西,那么将它添加到正则表达式

中的字符类

答案 1 :(得分:0)

删除' \ n'试试这个....

表示my_dict.items()中的键,值:        my_dict [key] ='' .join(value.split(' \ n'))

答案 2 :(得分:0)

您需要将更新后的值恢复到字典中(类似于"按值与参考"情况;)... ...

删除" / n"这个衬里可能更多" pythonic" :

new_test ={ k:v.replace("\n", "") for k,v in test.iteritems()}

在你的循环中尝试做你想做的事情:

new_test ={ k:str(value[:10]).replace("\n", " ") for k,v in test.iteritems()}

在你的代码中,value取新值,但你永远不会把它写回来...... 所以例如,这会起作用(但是要慢一些,你也会改变循环中的值,这不应该导致问题,但解释器可能不喜欢......):

for key, value in test.items():
    value = str(value[:10]).replace("\n", " ")
    #now put it back to the dictionary...
    test[key]=value
    print key, value