Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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_Dictionary - Fatal编程技术网

Python 用文件中的列表替换名称

Python 用文件中的列表替换名称,python,list,file,dictionary,Python,List,File,Dictionary,我有一个像这样的文件,分为以下几个部分: [main] a b < sectionA c [sectionA] x < sectionB y z [sectionB] q w e 结果是: {'main':['a','b','a','c','b':['q','w','e','a':['x','b','y','z']}这并不难。这是算法: 1. Find all indexes in main starting with <. 2. If none are found,

我有一个像这样的文件,分为以下几个部分:

[main]

a
b
< sectionA
c

[sectionA]
x
< sectionB
y
z

[sectionB]
q
w
e
结果是:
{'main':['a','b','a','c','b':['q','w','e','a':['x','b','y','z']}

这并不难。这是算法:

1. Find all indexes in main starting with <.
2. If none are found, go to 5.
3. Replace every index with the according section (inserted unpacked).
4. Go to 1.
5. Done.

1。从开始,在main中查找所有索引,这并不难。这是算法:

1. Find all indexes in main starting with <.
2. If none are found, go to 5.
3. Replace every index with the according section (inserted unpacked).
4. Go to 1.
5. Done.

1。从开始查找main中的所有索引我用两个函数解决了您的问题。第一个用于将输入文件(
renderfile(filename)
)呈现到Python字典中,第二个用于将内容与节引用合并到起始节(
rendercontents(contents,startsection)
):

def renderfile(文件名):
内容={}
打开(文件名)为f时:
currentsection=“”
对于f.readlines()中的行:
如果行==“\n”:
持续
行=行。替换(“\n”和“”)
如果行.startswith(“[”):
currentsection=第[1:-1]行
内容[currentsection]=[]
其他:
内容[currentsection]。追加(行)
返回内容
def呈现内容(内容,开始部分):
returnlist=[]
对于内容中的行[startsection]:

if line.startswith(“我用两个函数解决了您的问题。第一个用于将输入文件(
renderfile(filename)
)呈现到Python字典中,第二个用于将内容与节引用合并到起始节(
rendercontents(contents,startsection)
):

def renderfile(文件名):
内容={}
打开(文件名)为f时:
currentsection=“”
对于f.readlines()中的行:
如果行==“\n”:
持续
行=行。替换(“\n”和“”)
如果行.startswith(“[”):
currentsection=第[1:-1]行
内容[currentsection]=[]
其他:
内容[currentsection]。追加(行)
返回内容
def呈现内容(内容,开始部分):
returnlist=[]
对于内容中的行[startsection]:

if line.startswith(“我为您编写了一些疯狂的代码:

import collections
def load(fname):
    d = collections.OrderedDict()
    for i in (line.rstrip('\n') for line in open(fname) if line[:-1]):
        d.update({i[1:-1]:[], '_':i[1:-1]}) \
        if i.startswith('[') else d[d['_']].append(i)
    return d

def join(first, dic):
    f = dic[first]
    for i,j in ((i,j[2:]) for i,j in enumerate(f) if j.startswith('<')):
        f[i:i+1] = join(j, dic)
    return f

d = load('file.txt')
join(next(iter(d)), d)
导入集合
def加载(fname):
d=collections.OrderedDict()
对于i in(line.rstrip('\n'),对于line in open(fname),如果行[:-1]):
d、 更新({i[1:-1]:[],“”:i[1:-1]})\
如果i.startswith('[')else d[d[''.]]。追加(i)
返回d
def连接(第一,驾驶员信息中心):
f=dic[第一个]

对于i,j in((i,j[2:])对于i,j in枚举(f)如果j.startswith(“我为您编写了一些疯狂的代码:

import collections
def load(fname):
    d = collections.OrderedDict()
    for i in (line.rstrip('\n') for line in open(fname) if line[:-1]):
        d.update({i[1:-1]:[], '_':i[1:-1]}) \
        if i.startswith('[') else d[d['_']].append(i)
    return d

def join(first, dic):
    f = dic[first]
    for i,j in ((i,j[2:]) for i,j in enumerate(f) if j.startswith('<')):
        f[i:i+1] = join(j, dic)
    return f

d = load('file.txt')
join(next(iter(d)), d)
导入集合
def加载(fname):
d=collections.OrderedDict()
对于i in(line.rstrip('\n'),对于line in open(fname),如果行[:-1]):
d、 更新({i[1:-1]:[],“”:i[1:-1]})\
如果i.startswith('[')else d[d[''.]]。追加(i)
返回d
def连接(第一,驾驶员信息中心):
f=dic[第一个]

对于i,j in((i,j[2:]),对于i,j in枚举(f),如果j.startswith('这里面好像少了点什么,
文件
定义在哪里?我想OP说的是分区在一个文件中。你用分区的名称打开文件,这里面好像少了点什么,
文件
定义在哪里?我想OP说的是分区在一个文件中。你用分区的名称打开文件部分我喜欢你的连接函数。我会用我的代码(做一些更改)加载文件,因为我不理解你的…我喜欢你的连接函数。我会用我的代码(做一些更改)加载文件,因为我不理解你的。。。