我该如何制作一大串花车?

Pet*_*ves 2 python concatenation

我正在创建一个包含大量数字数据的arff文件.既然我的特征向量非常大,我最终得到了这样的代码

with(file,'w') as myfile:
    s = number + ","
    s += number + ","
    s += number + ","
    s += number + ","
    ...
    myfile.write(s)
Run Code Online (Sandbox Code Playgroud)

由于我对Python很陌生,我显然忘记了Python似乎不允许将浮点数连接到这样的字符串并给出以下错误.

unsupported operand type(s) for +: 'numpy.float64' and 'str'
Run Code Online (Sandbox Code Playgroud)

那么一个更有经验的python程序员如何处理这个问题,或者我真的必须将所有这些数字转换成这样的字符串

with(file,'w') as myfile:
    s = str(number) + ","
    s += str(number) + ","
    s += str(number) + ","
    s += str(number) + ","
    ...
    myfile.write(s)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

不要手写CSV行.使用csv模块:

with(file, 'wb') as myfile:
    writer = csv.writer(myfile)
    writer.writerow([number1, number2, number3])
Run Code Online (Sandbox Code Playgroud)

列表中的每个元素都将转换为字符串.

使用numpy数组时,您可以使用numpy.savetext()以获得相同的结果.

即使没有csv模块,您也只需将一系列值组合成一个字符串str.join(),并明智地帮助map()确保所有值都是字符串:

s = ','.join(map(str, [number1, number2, number3]))
Run Code Online (Sandbox Code Playgroud)

后者的快速演示(使用Python 2):

>>> number = 42.4245
>>> string = 'The quick brown fox'
>>> empty = None
>>> map(str, [number, string, empty])
['42.4245', 'The quick brown fox', 'None']
>>> ','.join(map(str, [number, string, empty]))
'42.4245,The quick brown fox,None'
Run Code Online (Sandbox Code Playgroud)