【问题标题】:Parse json string in csv file [duplicate]解析csv文件中的json字符串[重复]
【发布时间】:2017-08-01 21:15:03
【问题描述】:

我有一个包含一些 JSON 字符串的 CSV 文件,我想将其解析并存储到数据框中。该文件如下所示:

file1,"{\"A1\": {\"a\": \"123\"}, \"B1\": {\"b1\": \"456\", \"b2\": \"789\", \"b3\": \"000\"}}",
file2,"{\"A2\": {\"a\": \"321\"}, \"B2\": {\"b1\": \"654\", \"b2\": \"987\"}}"

在得到字典中的键之后。我想要的日期范围是:

 1              2                                    3           
file1   {"A1":{"a":"123"}}    {"B1":{"b1":"456","b2":"789","b3":"000"}}  
file2   {"A2":{"a2":"321"}}   {"B2":{"b1":"654","b2":"987"}}

第 2 列和第 3 列中的值将是字典。 我试过了:

pd.read_csv(file, quotechar='"', header=None) 

但它仍然以错误的方式分隔我的 JSON...
有什么建议? 非常感谢!

【问题讨论】:

  • 你的问题的格式不是很清楚,但你已经做到了多少?解析csv很容易
  • 如果我使用pd.read_csv(file),第三个逗号会将“B1”的字典分成三部分。最后一部分就像 "b3":"000"}} ,不是 json 形式。
  • 你的 json 被引用了。你需要设置引号字符,否则所有逗号都被拆分,是的。
  • 我试过 pd.read_csv(file,quotechar='"',header=None) 它仍然以错误的方式分隔我的 json...
  • 我在这个文件中没有列,所以我不知道如何在 pd.read_csv() 中使用转换器 ...

标签: python json csv pandas dataframe


【解决方案1】:

您拥有的数据使用\" 在每个单元格中转义双引号。可以通过将doublequote=Trueescapechar='\\' 设置为如下参数来指定此行为:

df = pd.read_csv('input.json', doublequote=True, escapechar='\\')
print df

给你类似的东西:

       0                                                  1     2
0  file1  {"A1": {"a": "123"}, "B1": {"b1": "456", "b2":...      
1  file2  {"A2": {"a": "321"}, "B2": {"b1": "654", "b2":...  None
   file1 {"A1": {"a": "123"}, "B1": {"b1": "456", "b2": "789", "b3": "000"}}  \
0  file2  {"A2": {"a": "321"}, "B2": {"b1": "654", "b2":...                    

   Unnamed: 2  
0         NaN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2018-09-13
    相关资源
    最近更新 更多