使用 python 从 json unicode 字典中删除 \n \\n 和其他不需要的字符
Removing \n \\n and other unwanted characters from a json unicode dictionary with python
我已经尝试了几种不同的解决方案来解决我的 json 字典中一些“有趣的”换行符的问题,其中 none 行得通,所以我想我可以做一个 post。该词典是通过抓取一个网站来实现的。
我有一本 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
但没有成功因为我的 'values' 是 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
如果您要删除所有 \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
如果您希望保留与这些不同的任何内容,请将其添加到正则表达式
内的字符 class
删除 '\n' 试试这个....
对于键,my_dict.items() 中的值:
my_dict[key] = ''.join(value.split('\n'))
您需要将更新后的值放回您的字典中(类似于 "by value vs. by reference" 情况;))...
去掉"/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
我已经尝试了几种不同的解决方案来解决我的 json 字典中一些“有趣的”换行符的问题,其中 none 行得通,所以我想我可以做一个 post。该词典是通过抓取一个网站来实现的。
我有一本 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
但没有成功因为我的 'values' 是 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
如果您要删除所有 \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
如果您希望保留与这些不同的任何内容,请将其添加到正则表达式
内的字符 class删除 '\n' 试试这个....
对于键,my_dict.items() 中的值: my_dict[key] = ''.join(value.split('\n'))
您需要将更新后的值放回您的字典中(类似于 "by value vs. by reference" 情况;))...
去掉"/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