Python通过不带括号字符的文件导出到文件
我成功地简化了从光谱仪导入数据的python模块 (我完全是个初学者,其他人为我编写了代码模型…) 我只有一个问题:一半的输出数据(在Python通过不带括号字符的文件导出到文件,python,python-2.7,csv,Python,Python 2.7,Csv,我成功地简化了从光谱仪导入数据的python模块 (我完全是个初学者,其他人为我编写了代码模型…) 我只有一个问题:一半的输出数据(在.csv文件中)用括号括起来:[] 我希望该文件包含如下结构: name, wavelength, measurement i、 e 但我得到的是: a,400,[0.34] a,410,[0.65] ... 有什么简单的解决方法吗 是因为测量是一个字符串 多谢各位 import serial # requires pyserial library ser
.csv
文件中)用括号括起来:[]
我希望该文件包含如下结构:
name, wavelength, measurement
i、 e
但我得到的是:
a,400,[0.34]
a,410,[0.65]
...
有什么简单的解决方法吗
是因为测量
是一个字符串
多谢各位
import serial # requires pyserial library
ser = serial.Serial(0)
ofile = file( 'spectral_data.csv', 'ab')
while True:
name = raw_input("Pigment name [Q to finish]: ")
if name == "Q":
print "bye bye!"
ofile.close()
break
first = True
while True:
line = ser.readline()
if first:
print " Data incoming..."
first = False
split = line.split()
if 10 <= len(split):
try:
wavelength = int(split[0])
measurement = [float(split[i]) for i in [6]]
ofile.write(str(name) + "," + str(wavelength) + "," + str(measurement) + '\n')
except ValueError:
pass # handles the table heading
if line[:3] == "110":
break
print " Data gathered."
ofile.write('\n')
import serial#需要pyserial库
ser=串行。串行(0)
ofile=文件('spectrum_data.csv','ab')
尽管如此:
名称=原始输入(“颜料名称[Q完成]:”)
如果名称==“Q”:
打印“再见!”
ofile.close()
打破
第一个=正确
尽管如此:
line=ser.readline()
如果首先:
打印“数据输入…”
第一个=错误
split=line.split()
如果10这样做:
measurement = [float(split[i]) for i in [6]]
ofile.write(str(name) + "," + str(wavelength) + "," + ",".join(measurement) + '\n')
或
ofile.write(str(name) + "," + str(wavelength) + "," + split[6] + '\n')
你在[6]中的[float(split[i])这一行上尝试了什么呢?
它与[code>[[float(split[6])]完全一样。嗨,不起作用。你确定你做得正确吗?什么是。join?谢谢你是说str.join(测量)?应该有效,你得到了什么?join
获取一个列表,并将其转换为一个字符串,其中列表项与被调用的字符串分隔,在本例中为,
。尝试一下。问题是测量
是一个浮点,而不是获得:名称、波长、测量
测量部分拆分为几个逗号:>a、 400,[2.19]
(以前的结果)变成:a,4002,,,1,9
你把我的两个建议结合起来了?也许我不清楚。我会编辑答案
ofile.write(str(name) + "," + str(wavelength) + "," + split[6] + '\n')