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)
不要手写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)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |