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说的是分区在一个文件中。你用分区的名称打开文件部分我喜欢你的连接函数。我会用我的代码(做一些更改)加载文件,因为我不理解你的…我喜欢你的连接函数。我会用我的代码(做一些更改)加载文件,因为我不理解你的。。。