如何写浮点数到CSV文件,没有逗号在Python?



假设我有一个这样的列表:

list1 = [12.34, 17.68, 19.22]

现在我想将每个数字写入CSV文件的一行中。之后我将数字的类型改为字符串,我这样做:

with open(output_file_name, 'w') as ofile:
outfile = csv.writer(ofile)
outfile.writerows(list1)

,结果将是这样的:

1,2,.,3,4
1,7,.,6,8
1,9,.,2,2

如何删除数字之间的逗号?

注意:

  1. 我想显示一行中的每个数字
  2. 我不需要任何分隔符
  3. 我使用Python 3.9.7
  4. 我知道。csv文件可能不适合这种情况,但这是一个项目,有人想从我,作为一个考试!

您正在传递list1作为行的列表,因此csv模块会尽力弄清楚您的意思。

可能你真正的意思是

outfile.writerow(list1)

(注意奇异的writerow)将所有的值写成一行。

或者,如果您想每行一个数字,请尝试

outfile.writerows([x] for x in list1)

在您的尝试中,list1被转换为字符串列表,然后每个字符串被分割成一个序列以产生一行。

重申一下,csv.writer.writerow的参数应该是单元格值的列表,writerows的参数应该是这样的行列表。

writerows将把数组的每个元素视为一行,并尝试遍历该行中的条目,这就是为什么它将字符串拆分为单个字符的原因。如果您想将每个数字写在单独的行上,则使用:

with open(output_file_name, 'w') as ofile:
outfile = csv.writer(ofile)
outfile.writerows(([str(i)] for i in list1))

使用pathlib轻松编写内容

from pathlib import Path
# create file and write text
out_file = Path('example.csv')
# data
list_1 = [12.34 , 17.68 , 19.22]
out_file.write_text('column1, ')
with out_file.open(mode='a') as f:
# write to file
{f.write(f'n{item}, ') for item in list_1}


# read contents
contents = out_file.read_text()
print(contents)
import csv
list1 = [12.34, 17.68, 19.22]
with open('output_file_name', 'w') as ofile:
outfile = csv.writer(ofile, delimiter=" ")
outfile.writerow(list1)

这应该适用于你,我已经检查了它在编辑器:-D致以最诚挚的问候;-)

一个快速的方法是使用.join()方法。此方法可以从迭代器(例如列表)中获取项,并将它们连接在一起,并用您喜欢的任何字符分隔。你可以这样做,让你的条目之间只间隔一个空格:

with open(output_file_name, 'w') as ofile:
outfile = csv.writer(ofile)
outfile.writerows(' '.join(list1))

如果你不想让条目之间有空格,而是想让它们都粘在一起,可以这样做:

outfile.writerows(''.join(list1))

最新更新