我有一个字符串列表。
theList = ['a', 'b', 'c']
我想在字符串中添加整数,产生如下输出:
newList = ['a0', 'b0', 'c0', 'a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'a3', 'b3', 'c3']
我想将此格式保存为.txt文件,格式为:
a0
b0
c0
a1
b1
c1
a2
b2
c2
a3
b3
c3
尝试:
theList = ['a', 'b', 'c']
newList = []
for num in range(4):
stringNum = str(num)
for letter in theList:
newList.append(entry+stringNum)
with open('myFile.txt', 'w') as f:
print>>f, newList
现在我可以保存到文件myFile.txt,但文件中的文字为:
['a0', 'b0', 'c0', 'a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'a3', 'b3', 'c3']
非常欢迎有关更多pythonic方法实现我的目标的任何提示,
答案 0 :(得分:7)
使用:
代替最后一行f.write("\n".join(newList))
这将把newList中的字符串写成f,用换行符分隔。请注意,如果您实际上不需要newList,则可以组合两个循环并随时编写字符串:
the_list = ['a', 'b', 'c']
with open('myFile.txt', 'w') as f:
for num in range(4):
for letter in the_list:
f.write("%s%s\n" % (letter, num))
答案 1 :(得分:2)
这可能会完成你的工作
with open('myFile.txt', 'w') as f:
for row in itertools.product(range(len(theList)+1),theList):
f.write("{1}{0}\n".format(*row))
答案 2 :(得分:2)
如果你想稍微压缩你的代码,你可以这样做:
>>> n = 4
>>> the_list = ['a', 'b', 'c']
>>> new_list = [x+str(y) for x in the_list for y in range(n)]
>>> with open('myFile.txt', 'w') as f:
... f.write("\n".join(new_list))
答案 3 :(得分:1)
你正在做的事情很好 - Zen of Python中的一点是“简单比复杂更好”。您可以轻松地将其重写为单行(可能使用嵌套列表理解),但您所拥有的内容很好且易于理解。
但是我可能会做一些小改动:
json.dump(newList, f)
在文本文件中使用更便携的序列化,例如JSON。但是,使用with
语句很有用。stringNum
变量 - 附加内的str(num)
也一样好new_list
代替newList