Python 具有数据初始化的CSV列的JSON键值
csv文件,每行有json,但每列有一个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"} ║ ╚═══╩═══════════
╔═══╦══════════════════════╗
║ ║ 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])