正在寻找一种更好的方法来使用python3将文本列表转换为json字符串

2024-05-12 12:39:38 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是输入列表(在文件\u id.txt中):

file-F0Y6GbQ09k704jfGBQX0pgF8
file-FfYqQv00ypGfqQKkF96zX3yV
file-FfYqPf80ypGj712qFBggV2BV
file-FfQpFYQ0ypGqfjkJ8z90Ygzv
file-FfQpFYQ0ypGpQ4K7GGj40VVZ
file-FfQpFYQ0ypGxV3xG7BZQxz3y
file-FfQpFYQ0ypGZ3ZVk7745ZGFf
file-Ff0Qk100ypGYV26V52JZkJ0q
file-FfK1pZ80ypGjgyF73b3fFjgG

下面是所需的输出(output.json):

{
 "stage-xxx.input_files": [
  {"$dnanexus_link": "file-F0Y6GbQ09k704jfGBQX0pgF8"},
  {"$dnanexus_link": "file-FfYqQv00ypGfqQKkF96zX3yV"},
  {"$dnanexus_link": "file-FfYqPf80ypGj712qFBggV2BV"},
  {"$dnanexus_link": "file-FfQpFYQ0ypGqfjkJ8z90Ygzv"},
  {"$dnanexus_link": "file-FfQpFYQ0ypGpQ4K7GGj40VVZ"},
  {"$dnanexus_link": "file-FfQpFYQ0ypGxV3xG7BZQxz3y"},
  {"$dnanexus_link": "file-FfQpFYQ0ypGZ3ZVk7745ZGFf"},
  {"$dnanexus_link": "file-Ff0Qk100ypGYV26V52JZkJ0q"},
  {"$dnanexus_link": "file-FfK1pZ80ypGjgyF73b3fFjgG"}
 ]
}

这是我目前的代码:

#!/usr/bin/python3 env
fname = input("Enter file name of the list: ")
if len(fname) < 1 : fname = "file_id.txt"

stage_name = input("Enter stage name for the input: ")
if len(stage_name) < 1 : stage_name = "stage-xxx"

input_var = input("Enter input variable name: ")
if len(input_var) < 1 : input_var = "input_files"

fh = open(fname)

out_file = open('output.json', 'w')
out_file.write('{\n "' + f'{stage_name}' + "." + f'{input_var}' + '": [' + "\n")
for line in fh:
    fileid = line.rstrip()
    out_file.write("  {" + "\"$dnanexus_link\": " + f'"{fileid}"' + "},\n")
out_file.write(' ]\n}\n')
out_file.close()
print("output.json created!")

我对python相当陌生,不知道如何删除输出json中最后一个文件末尾的逗号。我想知道是否有一种方法可以使用json模块将文件列表转储为json格式,而无需静态文本编码


Tags: 文件namejsoninputoutputlenifvar
1条回答
网友
1楼 · 发布于 2024-05-12 12:39:38

这段代码读取您的文件,同时生成listdict

然后我将这个list包装在最后的dict中,并使用json.dumps()获得一个字符串:

import json

with open('file_id.txt') as f:
    txt = [{'$dnanexus_link': line.strip()} for line in f]

#print(txt)

d = {'stage-xxx.input_files': txt}
print(json.dumps(d))

作为output.json输出,但在一行上

相关问题 更多 >