我有一个包含第一个和最后一个'syllables'的文本文件,用[part1]和[part2]划分:
[part1] Ae Di Mo Fam [part2] dar kil glar tres
我想要做的就是在[part1]和[part2]之间选择一条随机线,然后在[part2]和文件末尾之间选择另一条随机线,并将两者连接在一起(例如"Aedar","Moglar") )创建随机名称.
但是我不确定如何使用readline()有效地解析文本文件.有没有比顺序扫描每一行更好的方法,并将所有这些存储在一个列表中,从那里我可以选择一个随机元素?
AJ.*_*AJ. 11
将字典序列化(pickle)到文件中.
例:
# create the dict and save it to a file
d={
'part1':[
'Ae',
'Di',
'Mo',
'Fam',],
'part2':[
'dar',
'kil',
'glar',
'tres',],
}
import pickle
f=open('syllables','w')
pickle.dump(d,f)
f.close()
# read the dict back in from the file
f1=open('syllables','r')
sd=pickle.load(f1)
f1.close()
import random
first_part=sd['part1'][random.randint(0,len(sd['part1'])-1)]
second_part=sd['part2'][random.randint(0,len(sd['part2'])-1)]
print '%s%s'%(first_part,second_part)
Run Code Online (Sandbox Code Playgroud)
import random
parts = {}
with open('parts.txt', 'r') as f:
currentList = []
for line in f.readlines():
line = line.strip()
if line.startswith('[') and line.endswith(']'):
currentList = []
parts[line[1:-1]] = currentList
else:
currentList.append(line.strip())
for i in xrange(10):
print ''.join(random.choice(parts[partName]) for partName in sorted(parts))
Run Code Online (Sandbox Code Playgroud)
返回(随机):
Aekil
Didar
Mokil
Mokil
Moglar
Moglar
Diglar
Famdar
Famdar
Modar
Run Code Online (Sandbox Code Playgroud)