Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有数据初始化的CSV列的JSON键值_Python_Json_Api_Csv_Python 2.6 - Fatal编程技术网

Python 具有数据初始化的CSV列的JSON键值

Python 具有数据初始化的CSV列的JSON键值,python,json,api,csv,python-2.6,Python,Json,Api,Csv,Python 2.6,csv文件,每行有json,但每列有一个json,格式如下: ╔═══╦══════════════════════╗ ║ ║ A ║ ╠═══╬══════════════════════╣ ║ 2 ║ {"discover":"123"} ║ ║ 3 ║ {"offer":"321"} ║ ║ 4 ║ {"roadmap":"788789"} ║ ║ 5 ║ {"nebravvska":"890"} ║ ╚═══╩═══════════

csv文件,每行有json,但每列有一个json,格式如下:

╔═══╦══════════════════════╗
║   ║ A                    ║
╠═══╬══════════════════════╣
║ 2 ║ {"discover":"123"}   ║
║ 3 ║ {"offer":"321"}      ║
║ 4 ║ {"roadmap":"788789"} ║
║ 5 ║ {"nebravvska":"890"} ║
╚═══╩══════════════════════╝
我希望将上述JSON键和值写入csv col1和col2中的每一行,而不替换现有数据。俄亥俄州和加利福尼亚州是现有的数据

预期产出:

我正在使用pycharm 2.6。我下面的代码正在将键和值写入一列

    ╔═══╦════════════════╗
    ║   ║ A              ║
    ╠═══╬════════════════╣
    ║ 1 ║ discover 123   ║
    ║ 2 ║ offer 321      ║
    ║ 3 ║ roadmap 788789 ║
    ║ 4 ║ nebravvska 890 ║
    ╚═══╩════════════════╝

    with open("JSONsinfile.csv","rU") as infile:
            with open("output.csv","a+") as outfile:
                writer = csv.writer(outfile, delimiter=' ')
                for line in infile:
                    d = json.loads(line)
                    writer.writerows(d.items())

        infile.close()
        outfile.close()

如果要保留现有数据,则需要读入该数据:

代码:

现有数据文件1:

传入Json文件2:

结果文件3:


如果要保留现有数据,则需要读入该数据:

代码:

现有数据文件1:

传入Json文件2:

结果文件3:


使用pandas库,您可以获得以下解决方案:

1-安装熊猫

pip install pandas
2-脚本:

import csv, json
import csv
import pandas as pd

inp_csv = pd.read_csv("JSONsinfile.csv")
lst_of_dict = inp_csv['{"discover":"123"}'].tolist()
mydict={key:value for elem in lst_of_dict for key,value in eval(elem).items()}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)
    for key, value in mydict.items():
        writer.writerow([key, value])

使用pandas库,您可以获得以下解决方案:

1-安装熊猫

pip install pandas
2-脚本:

import csv, json
import csv
import pandas as pd

inp_csv = pd.read_csv("JSONsinfile.csv")
lst_of_dict = inp_csv['{"discover":"123"}'].tolist()
mydict={key:value for elem in lst_of_dict for key,value in eval(elem).items()}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)
    for key, value in mydict.items():
        writer.writerow([key, value])

下面的代码将在一列中写入键,在另一列中写入值,您必须在读取csv后创建字典

mydict = {"discover":"123","offer:321"}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)e 
    for key, value in mydict.items():
        writer.writerow([key, value])

下面的代码将在一列中写入键,在另一列中写入值,您必须在读取csv后创建字典

mydict = {"discover":"123","offer:321"}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)e 
    for key, value in mydict.items():
        writer.writerow([key, value])

我在2.7中尝试了这段代码,它在_data={row[0]:row[1]for row in reader}中给出了如下语法错误。我只是将该代码剪切并粘贴为一个块,它在2.7中运行良好。你确定你没有2.6?Try:in_data=dictrow[0],第[1]行对应readerI中的行,我现在做的是2.6。我把2.7这个词收回去了对不起,打错了。我在下面做的是2.6/System/Library/Frameworks/Python.framework/Versions/2.6/Users/CSVJson到csv_stack.py中的错误,回溯最近一次调用:File/Users/CSVJson到csv_stack.py,第8行,in_data=dictrow[0],第[1]行,用于读卡器文件中的行/Users/CSVJson到csv_stack.py,第8行,in_data=dictrow[0],reader Indexer中的行的行[1]:列表索引超出范围,表示读取器未将文件读入两列。您的文件列是如何分隔的?您需要告诉csv阅读器正确读取该文件所需的内容。在文件中,JSON在col1 cellA{discover:123}col1 cell2{offer:321}中是这样的。我在2.7中尝试了这段代码,它在_data={row[0]:row[1]中为reader}中的row给出语法错误,如下所示。我只是将该代码剪切并粘贴为一个块,并在2.7中运行良好。你确定你没有2.6?Try:in_data=dictrow[0],第[1]行对应readerI中的行,我现在做的是2.6。我把2.7这个词收回去了对不起,打错了。我在下面做的是2.6/System/Library/Frameworks/Python.framework/Versions/2.6/Users/CSVJson到csv_stack.py中的错误,回溯最近一次调用:File/Users/CSVJson到csv_stack.py,第8行,in_data=dictrow[0],第[1]行,用于读卡器文件中的行/Users/CSVJson到csv_stack.py,第8行,in_data=dictrow[0],reader Indexer中的行的行[1]:列表索引超出范围,表示读取器未将文件读入两列。您的文件列是如何分隔的?您需要告诉csv阅读器正确读取该文件所需的内容。在文件中,JSON在col1 cellA{discover:123}col1 cell2{offer:321}中是这样的。这行是lst_of_dict=inp_csv[{discover:123}].tolist将所有Json放入列表或仅一个Json。这一行正在创建一个列表,其中discover:123已作为column name作为其第一个元素,我们可以有任何column name。它将所有JSON从同一列中取出。mydict={key:value for elem in lst_of_dict for key,value in evalelem.items}^SyntaxError:invalid syntax此错误在MyDicts之后出于语法错误此错误此行lst_of_dict=inp_csv['{discover:123}].tolist将所有Json放入列表或仅一个Json。这一行正在创建一个列表,其中discover:123已作为column name作为其第一个元素,我们可以有任何column name。它将所有JSON从同一列中取出。mydict={key:value for elem in lst_of THE_dict for key,value in evalelem.items}^SyntaxError:invalid syntax此错误用于mydict之后的语法错误
import csv, json
import csv
import pandas as pd

inp_csv = pd.read_csv("JSONsinfile.csv")
lst_of_dict = inp_csv['{"discover":"123"}'].tolist()
mydict={key:value for elem in lst_of_dict for key,value in eval(elem).items()}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)
    for key, value in mydict.items():
        writer.writerow([key, value])
mydict = {"discover":"123","offer:321"}

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)e 
    for key, value in mydict.items():
        writer.writerow([key, value])