我已经尝试了几种不同的解决方案来解决我的问题,其中一些"搞笑"我的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.strip
和str.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
答案 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