Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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_Python_List_File - Fatal编程技术网

在文件中获取格式化列表以列出python

在文件中获取格式化列表以列出python,python,list,file,Python,List,File,我有一个与另一封信对应的信件列表的文件: A['B', 'D'] B['A', 'E'] C[] D['A', 'G'] E['B', 'H'] F[] G['D'] H['E'] 我需要将这些列表导入到它们对应的字母中,希望有这样的变量: vertexA = ['B', 'D'] vertexB = ['A', 'E'] vertexC = [] vertexD = ['A', 'G'] vertexE = ['B', 'H'] vertexF = [] vertexG = ['D'] ve

我有一个与另一封信对应的信件列表的文件:

A['B', 'D']
B['A', 'E']
C[]
D['A', 'G']
E['B', 'H']
F[]
G['D']
H['E']
我需要将这些列表导入到它们对应的字母中,希望有这样的变量:

vertexA = ['B', 'D']
vertexB = ['A', 'E']
vertexC = []
vertexD = ['A', 'G']
vertexE = ['B', 'H']
vertexF = []
vertexG = ['D']
vertexH = ['E']
string='A["B","C"]'
最好的方法是什么?我试图寻找答案,但不幸的是这样做了。感谢您的帮助。

文件A.txt:

A['B', 'D']
B['A', 'E']
C[]
D['A', 'G']
E['B', 'H']
F[]
G['D']
H['E']
守则:

with open('A.txt','r') as file:
   file=file.read().splitlines()
   listy=[[elem[0],elem[1:].strip('[').strip(']').replace("'",'').replace(' ','').split(',')] for elem in file]
这是一个嵌套列表,但正如Christian Dean所说,这是一个更好的方法

结果:

[['A', ['B', 'D']], ['B', ['A', 'E']], ['C', ['']], ['D', ['A', 'G']], ['E', ['B', 'H']], ['F', ['']], ['G', ['D']], ['H', ['E']]]

最好是编一本字典。字母表中的每个字母都将是一个键,然后该值将是相关字母的列表。以下是概念证明(未经测试):

使用它将很容易:

for v in vertices['B']:
    # do something with v

您可以尝试使用字典而不是变量,我认为这也使从文本文件填充数据变得更容易

vertex = {}
vertex['A'] = ['B', 'D']
vertex['A']
>>> ['B', 'D']

读取输入文件时,输入应如下所示:

vertexA = ['B', 'D']
vertexB = ['A', 'E']
vertexC = []
vertexD = ['A', 'G']
vertexE = ['B', 'H']
vertexF = []
vertexG = ['D']
vertexH = ['E']
string='A["B","C"]'
因此,我们知道第一个字母是列表的名称

import ast
your_list=ast.literal_eval(string[1:])

your_list:
['B', 'C']

您可以处理循环、读取文件和字符串操作以正确命名…

txt
文件还是什么?不,变量在这里是错误的方法。您需要使用数据结构,例如
列表
dict
。您能展示一下您的尝试吗?你能为你的问题提供答案吗?字典可能是一个很好的数据容器。然后你需要打开文件;对于每一行,提取键和值,将值添加到字典中的键。我以前也遇到过类似的问题,不要使用eval或exec,使用列表或字典会使一切变得更困难