【发布时间】:2019-10-04 22:02:03
【问题描述】:
我们有以下数据框:
import pandas as pd
import numpy as np
import json
from json import JSONDecodeError
json_as_str_list = [
"[{'key1': 312, 'name': 'Simple name'}]",
"[{'key1': 981, 'name': 'Name n' quote'}]",
np.nan
]
d = {'json_as_str': json_as_str_list}
df = pd.DataFrame(data=d)
json_as_str
0 [{'key1': 312, 'name': 'Simple name'}]
1 [{'key1': 981, 'name': 'Name n' quote'}]
2 NaN
在导入 json_as_str 列之后是一个字符串列表,但我希望它是一个 JSON 对象列表。我编写了一个函数,它应该返回给定字符串的空 JSON 对象列表或给定 np.nan 的空列表:
def convert_to_JSON_helper(json_str):
if isinstance(json_str, str):
json_str = json_str.replace("'", '"')
try:
return json.loads(json_str)
except JSONDecodeError:
print(json_str)
return []
else:
return []
当前实现不处理字符串内单引号(如数据框的第二行)。我应该如何修改函数以使其按预期工作?
我在使用df['json_as_str'].apply(convert_to_JSON_helper)时得到的当前输出:
0 [{'key1': 312, 'name': 'Simple name'}]
1 []
2 []
Name: json_as_str, dtype: object
我想得到的输出:
0 [{'key1': 312, 'name': 'Simple name'}]
1 [{'key1': 981, 'name': 'Name n' quote'}]
2 []
Name: json_as_str, dtype: object
【问题讨论】:
标签: python json pandas quotes double-quotes