如何避免最后一个逗号,而将整数数组写入Python中的文本文件

问题描述:

我需要编写一个整数数组到一个文本文件,但格式化的解决方案是在每个项目后添加逗号,我想避免最后一个。如何避免最后一个逗号,而将整数数组写入Python中的文本文件

的代码看起来是这样的:

 with open(name, 'a+') as f: 
      line = ['FOO ', description, '|Bar|'] 
      f.writelines(line) 
      f.writelines("%d," % item for item in values) 
      f.writelines('\n') 

每行以什么样的阵列遵循包含一个小的描述,然后整数列表开始。循环中添加了新行,因为它们变得可用。

我得到的输出看起来是这样的:

FOO描述|酒吧| 274,549,549,824,824,824,824,824,794,765,765,736,736,736,736,736,

我想有它这个样子,没有最后一个逗号:

FOO description | Bar | 274,549,549,824,824,824,824,824,824,794,765,765,736,736,736,736,736

我无法找到可以与writelines()一起使用的解决方案,并且我需要避免在其他循环中进行冗长的处理。

+0

的字符串转换通过映射或东西,列出然后执行:obj.rstrip(“”),之后将其写入文本文件,因为它最终会需要一个文本文件(字符串)写入文件! –

+4

使用'','。join(values)'而不是格式? –

+0

@Jon,这是一个答案。如果你不想写下来,我会记下这些观点。 :-) – user1712447

使用join

f.writelines(",".join(map(str,values))) 

注意values首先映射到字符串列表,而不是数字,用map

+0

这会工作,但我需要保留数字而不将它们转换为字符串 – TeilaRei

+0

写入文件的内容总是写成字符串,用'%'运算符将其转换为字符串,并将所需输出在你的问题结尾处有一个字符串。所以我必须问:你是什么意思? – trincot

+0

这是一个很好的观点,由于某种原因,我一直没有意识到这种转变。我想我正在寻找一种方法来实际保留原始类型的数据,但对于文本文件来说似乎不可能。 – TeilaRei

您可以使用下面的示例对其进行分片。 它会一直删除最后一个字符。

line = ['FOO ', description, '|Bar|'] 
line = line[:-1] 
f.writelines(line) 

您可以在这里使用打印功能。

print(*values,sep=',',file=f) 

如果您使用的是python2,请导入打印功能。

from __future__ import print_function 

切片是最好的方法,适用于所有情况,至少在你的情况。

f.writelines(line[:-1])