首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过csv.DictReader将csv.DictReader JSON结构写回TSV文件?

如何通过csv.DictReader将csv.DictReader JSON结构写回TSV文件?
EN

Stack Overflow用户
提问于 2019-07-15 23:29:57
回答 1查看 430关注 0票数 1

我正在创建一个python (Flask)应用程序,它将部署到生产中的只读文件系统中。总的来说,该应用程序的目的是:

  1. 将.TSV解析为包装程序python脚本(main.py)中的字典列表(使用csv.DictReader)
  2. 将该列表转换为JSON结构(仍然是main.py)
  3. 将此JSON结构作为命令行中的参数传递给另一个python脚本(author-script.py) (因为我无法在生产中本地保存.TSV文件)
  4. 解析JSON结构并写入内存中的临时TSV文件(现在在author-script.py中)
  5. 处理TSV文件以生成结果的HTML (author-script.py)

对于第4步,我希望author-script.py脚本解析这个JSON结构,最终像通过csv.DictWriter解析.TSV文件一样。这是因为,最初,author-script.py是为了解析TSV文件而设置的,修改它需要花费太长时间才能解析字典。

目前,我这样做的方法是从JSON结构返回到字典,然后通过csv.DictWriter将它们写出来。下面是我的尝试(就像在author-script.py中开始解析JSON结构参数一样):

代码语言:javascript
复制
import csv
import json
from pprint import pprint
from ast import literal_eval

# This is the JSON structure that's passed to the python script
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* infile = '"[{\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Anna\\", \\"Last_Name\\": \\"Karenina\\", \\"Tel\\": \\"8885006000\\", \\"Data generation\\": \\"Y\\", \\"Places\\": \\"BioInform_Harvard\\", \\"Fax\\": \\"8885006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"1\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"anna.Karenina@ucsf.edu\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Konstantin\\", \\"Last_Name\\": \\"Levin\\", \\"Tel\\": \\"8887006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"Neuro_Harvard\\", \\"Fax\\": \\"8887006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"1\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Konstantin.levin@childrens.harvard.edu\\", \\"Initials\\": \\"D\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Alexei\\", \\"Last_Name\\": \\"Vronsky\\", \\"Tel\\": \\"8889006000\\", \\"Data generation\\": \\"Y\\", \\"Places\\": \\"IGM_Columbia\\", \\"Fax\\": \\"8889006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"2\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"alexei.vronsky@cumc.columbia.edu\\", \\"Initials\\": \\"K\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Stepan\\", \\"Last_Name\\": \\"Oblonsky\\", \\"Tel\\": \\"8891006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"NIMH\\", \\"Fax\\": \\"8891006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"2\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"steoblon@mail.nih.gov\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Ekaterina\\", \\"Last_Name\\": \\"Shcherbatskaya\\", \\"Tel\\": \\"8893006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"CHU_Montreal\\", \\"Fax\\": \\"8893006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Ekaterina.Shcherbatskaya@umontreal.ca\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Alexei\\", \\"Last_Name\\": \\"Karenin\\", \\"Tel\\": \\"8895006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"BioInform_Harvard, Neuro_Harvard\\", \\"Fax\\": \\"8895006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Karenin05@hms.harvard.edu\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Fyodor\\", \\"Last_Name\\": \\"Dostoevsky\\", \\"Tel\\": \\"8897006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"Penn_Psych\\", \\"Fax\\": \\"8897006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"Y\\", \\"Email\\": \\"Fyodor_Dostoevsky@pennmedicine.upenn.edu\\", \\"Initials\\": \\"M\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Lev\\", \\"Last_Name\\": \\"Tolstoy\\", \\"Tel\\": \\"8899006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"UCSF_Weill\\", \\"Fax\\": \\"8899006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"Y\\", \\"Email\\": \\"ltolstoy@mednet.ucla.edu\\", \\"Initials\\": \\"N\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Place\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Address\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"BioInform_Harvard\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Biomedical Informatics, Harvard Medical School, Boston, MA, USA\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"CHU_Montreal\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"CHU Sainte-Justine Research Centre, University of Montreal, 3175 Chemin de la Co_te-Sainte-Catherine, Montreal, Quebec H3T 1C5, Canada.\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"IGM_Columbia\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Institute for Genomic Medicine, Columbia University Medical Center, Hammer Health Sciences, 1408, 701 West 168th St., New York, NY 10032, USA.\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Neuro_Harvard\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Neurology, Boston Children\'s Hospital and Harvard Medical School, Boston, MA, USA\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"NIMH\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"National Institute of Mental Health, 10 Center Dr, Bethesda, MD 20814\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Penn_Psych\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Psychiatry, Neuropsychiatry Section, Perelman School of Medicine at the University of Pennsylvania, 3400 Spruce, Philadelphia, PA 19104\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"UCSF_Weill\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Psychiatry, UCSF Weill Institute for Neurosciences, University of California, San Francisco, San Francisco, CA 94158\\"}]"'
*/

# Convert json string that's passed to script into literal list of dicts
contents = literal_eval(json.loads(infile))

# Put list of dicts back into TSV "file" in memory
writer = csv.DictWriter(open("dict_write_test.tsv", 'w'), fieldnames=None, delimiter='\t')
for l in contents:
    writer.writerow(l)

我得到的错误是TypeError: argument of type 'NoneType' is not iterable。如果我在相同的脚本中有csv.DictReader对象,我知道如何使它工作,但在本例中我不会这样做。

我的问题是

  1. 我如何从JSON ->字典-> DictReader对象-> DictWriter --> TSV文件中准确地转换?
  2. 如何写入内存中的.TSV文件

更新

当我在相同的代码中使用csv.DictReader对象测试以下方法时,csv.DictWriter方法显然工作良好,并在内存中打印出原始TSV中的TSV文件。但是,当我实现@martineau的解决方案时,这些列是以混乱的方式输出的。

代码语言:javascript
复制
infile = open("/Users/cdastmalchi/Downloads/Author_Template.tsv")

contents = csv.DictReader(infile, delimiter='\t')
memory_file = io.StringIO()

writer = csv.DictWriter(memory_file, fieldnames=contents.fieldnames, delimiter='\t')
for row in contents:
    writer.writerow(row)

as_string = memory_file.getvalue()
print('\n'.join(as_string.splitlines()))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-16 01:35:25

您得到了错误,因为在fieldnames=None调用中有csv.DictWriter()。您可以从contents列表中的第一个字典的键中获取字段名。

可以使用io.StringIO类将TSV文件写入内存。

代码语言:javascript
复制
from ast import literal_eval
import csv
import json
import io
from pprint import pprint

# This is the JSON structure that's passed to the python script
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* infile = '"[{\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Anna\\", \\"Last_Name\\": \\"Karenina\\", \\"Tel\\": \\"8885006000\\", \\"Data generation\\": \\"Y\\", \\"Places\\": \\"BioInform_Harvard\\", \\"Fax\\": \\"8885006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"1\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"anna.Karenina@ucsf.edu\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Konstantin\\", \\"Last_Name\\": \\"Levin\\", \\"Tel\\": \\"8887006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"Neuro_Harvard\\", \\"Fax\\": \\"8887006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"1\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Konstantin.levin@childrens.harvard.edu\\", \\"Initials\\": \\"D\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Alexei\\", \\"Last_Name\\": \\"Vronsky\\", \\"Tel\\": \\"8889006000\\", \\"Data generation\\": \\"Y\\", \\"Places\\": \\"IGM_Columbia\\", \\"Fax\\": \\"8889006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"2\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"alexei.vronsky@cumc.columbia.edu\\", \\"Initials\\": \\"K\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Stepan\\", \\"Last_Name\\": \\"Oblonsky\\", \\"Tel\\": \\"8891006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"NIMH\\", \\"Fax\\": \\"8891006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"2\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"steoblon@mail.nih.gov\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Ekaterina\\", \\"Last_Name\\": \\"Shcherbatskaya\\", \\"Tel\\": \\"8893006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"CHU_Montreal\\", \\"Fax\\": \\"8893006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Ekaterina.Shcherbatskaya@umontreal.ca\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Alexei\\", \\"Last_Name\\": \\"Karenin\\", \\"Tel\\": \\"8895006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"BioInform_Harvard, Neuro_Harvard\\", \\"Fax\\": \\"8895006001\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"Karenin05@hms.harvard.edu\\", \\"Initials\\": \\"A\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Fyodor\\", \\"Last_Name\\": \\"Dostoevsky\\", \\"Tel\\": \\"8897006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"Penn_Psych\\", \\"Fax\\": \\"8897006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"Y\\", \\"Email\\": \\"Fyodor_Dostoevsky@pennmedicine.upenn.edu\\", \\"Initials\\": \\"M\\"}, {\\"Manuscript preparation\\": \\"Y\\", \\"First_Name\\": \\"Lev\\", \\"Last_Name\\": \\"Tolstoy\\", \\"Tel\\": \\"8899006000\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"UCSF_Weill\\", \\"Fax\\": \\"8899006001\\", \\"Experimental design\\": \\"Y\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"Y\\", \\"Statistical analysis\\": \\"Y\\", \\"Data processing\\": \\"Y\\", \\"Corresponding\\": \\"Y\\", \\"Email\\": \\"ltolstoy@mednet.ucla.edu\\", \\"Initials\\": \\"N\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Place\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Address\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"BioInform_Harvard\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Biomedical Informatics, Harvard Medical School, Boston, MA, USA\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"CHU_Montreal\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"CHU Sainte-Justine Research Centre, University of Montreal, 3175 Chemin de la Co_te-Sainte-Catherine, Montreal, Quebec H3T 1C5, Canada.\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"IGM_Columbia\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Institute for Genomic Medicine, Columbia University Medical Center, Hammer Health Sciences, 1408, 701 West 168th St., New York, NY 10032, USA.\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Neuro_Harvard\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Neurology, Boston Children\'s Hospital and Harvard Medical School, Boston, MA, USA\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"NIMH\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"National Institute of Mental Health, 10 Center Dr, Bethesda, MD 20814\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"Penn_Psych\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Psychiatry, Neuropsychiatry Section, Perelman School of Medicine at the University of Pennsylvania, 3400 Spruce, Philadelphia, PA 19104\\"}, {\\"Manuscript preparation\\": \\"\\", \\"First_Name\\": \\"UCSF_Weill\\", \\"Last_Name\\": \\"\\", \\"Tel\\": \\"\\", \\"Data generation\\": \\"\\", \\"Places\\": \\"\\", \\"Fax\\": \\"\\", \\"Experimental design\\": \\"\\", \\"Joint\\": \\"\\", \\"Data analysis\\": \\"\\", \\"Statistical analysis\\": \\"\\", \\"Data processing\\": \\"\\", \\"Corresponding\\": \\"\\", \\"Email\\": \\"\\", \\"Initials\\": \\"Department of Psychiatry, UCSF Weill Institute for Neurosciences, University of California, San Francisco, San Francisco, CA 94158\\"}]"'
*/

# Convert json string that's passed to script into literal list of dicts
contents = json.loads(literal_eval(infile))
fieldnames = contents[0].keys()  # Get TSV fieldnames from first dictionary.

# Put list of dicts back into TSV "file" in memory
memory_file = io.StringIO()
writer = csv.DictWriter(memory_file, fieldnames=fieldnames, delimiter='\t')
writer.writerows(contents)

as_string = memory_file.getvalue()
print('\n'.join(as_string.splitlines()))

如果文件非常大,您可能在将文件作为命令行参数传递时遇到问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57048278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档