2012-03-21 57 views
0

我有一个数字列表,需要将它们全部放到文本文件中。我无法弄清楚如何打电话给每个项目并打印它们。我只知道如何将字符串写入文本文件。将列表中的每个项目写入文本文件

我需要计算每个项目并以某种方式使用范围函数吗?一定有更好的方法。我很坚持要开始。

f = open("numbers.txt", "r") 
numlist = [] 
for line in f: 
    numlist.extend([n for n in map(float, line.split()) if n > 0]) 
print numlist 
f.close() 

g = open("output.txt", "w") 
g.write(#writes each item in the list on its own line) 
g.close() 
+3

你能否将代码包含到问题中而不是链接到* screenshot *? – 2012-03-21 18:05:13

+1

这是功课吗? – 2012-03-21 18:08:38

+0

@RikPoggi明显... – iCodeLikeImDrunk 2012-03-21 18:10:07

回答

2

或者使用字符串格式化

g = open('output.txt', 'w') 
for num in numlist: 
    g.write("%f\n" % num) 
g.close() 

或者你可以在你的列表中理解其更改为字符串:

numlist.extend([str(n) for n in map(float, line.split()) if n > 0]) 
+0

有一个报价太多。这个扩展应该更好地使用genexpr,而不是列表理解。 – 2012-03-21 18:12:51

+0

是的,我编辑了报价。列表理解来自OPs代码截图。 – 2012-03-21 18:14:51

+2

这并不意味着它不能被改进(相反,它应该*被改进以帮助OP学习如何正确完成)。如果你想要转换回字符串,你不需要首先映射到'float'。一个简单的'numlist.extend(n代表line.split()如果float(n)> 0)'就足够了。 – 2012-03-21 18:17:45

2

因为它似乎是家庭作业,我只是要给一些指点:

  • Y您可以同时处理多个文件与一个with陈述,看一看:Python: open multiple files using “with open”?input_file线(我会写这一个给你)

    with open('numbers.txt') as input_file, open('output.txt', 'w') as output_file: 
    
  • 环行线。

  • strip()split()上的线和循环。
  • 检查contintion:

    if float(num) > 0: 
    
  • 而且如果通过你的num + '\n'

+0

这非常有帮助。我们还没有了解如何打开这两个文件。但它使它更容易。谢谢!! – 2012-03-21 18:35:23

相关问题