将str转换为float python
为什么会引发错误:将str转换为float python,python,type-conversion,Python,Type Conversion,为什么会引发错误:ValueError:无法将字符串转换为浮点: frequencies.append(float(l[start+1:stop1].strip())) losses.append(float(l[stop1+5:stop2].strip())) float()命令不是将值解析为float类型吗?我哪里错了?频率和损耗都在列表中 代码如下: def Capture(): impedance = 0 losses = [] frequencies = [] Xtalk =
ValueError:无法将字符串转换为浮点:
frequencies.append(float(l[start+1:stop1].strip()))
losses.append(float(l[stop1+5:stop2].strip()))
float()命令不是将值解析为float类型吗?我哪里错了?频率和损耗都在列表中
代码如下:
def Capture():
impedance = 0
losses = []
frequencies = []
Xtalk = []
start = 0
stop1 = 0
stop2 =0
for filename in glob.glob(os.path.join(user_input, '*.txt')):
with open(filename, 'r') as f:
for l in f.readlines():
if l.startswith(' Impedance'):
v = l[12:-7]
impedance = float(v)
if l.startswith(' Xtalk'):
Xtalk.append(l[7:].strip())
if l.startswith(' Loss per inch'):
start = l.find('@')
stop1 = l.find('GHz', start)
stop2 = l.find('dB', start)
frequencies.append(float(l[start+1:stop1].strip()))
losses.append(float(l[stop1+5:stop2].strip()))
print(impedance, frequencies, losses, Xtalk)
它基本上从文本文件中获取值并将它们打印到控制台上
文本文件如下所示:
Impedance = 71.28 ohms
Begin Post processing
Frequency multiplier = 1Hz
number of ports = 12
Start Frequency = 0
End Frequency = 40000000000
Number of Frequency points = 4001
Touchstone Output file = C:\Users\Aravind_Sampathkumar\Desktop\IMLC\BO\Output_TW_3.5-TS_3-core_h_2.xml_5000mil.s12p
Output format = Real - Imaginary
Loss per inch @ 2.500000e+00 GHz = -0.569 dB
Loss per inch @ 5 GHz = -0.997 dB
Xtalk #1 (Conductor 1 2):
Step response Next= -0.56 mV
Step response Fext peak @ 5 inches= 0.11 mV
Xtalk #2 (Conductor 5 6):
Step response Next= -0.56 mV
Step response Fext peak @ 5 inches= 0.11 mV
Finished post processing
首先确定变量的格式 无法使用“float()”解析器将带有逗号的字符串转换为float
a=“12345”
浮动(a)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:无法将字符串转换为浮点:“12345”
a=“1.2345”
浮动(a)
1.2345
什么是l
?您是否检查了传递给float的每个数据输入,以确保您实际上发送了float方法所期望的内容,以便将其正确转换为float?你能提供一个你的数据的样本吗?我已经编辑了question@Potato您仍然没有显示实际数据以了解float
方法失败的原因。问题在于您正在读取的数据以及如何将其传递给正在使用的方法。我建议删除float
方法中所做的所有工作,然后在行上打印,以查看每个条目的外观。这将帮助您更轻松地解决此问题。@Potato请不要截图。一个小的“真实”数据样本就足够了。
a = "1,2345"
float(a)
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not convert string to float: '1,2345'
a = "1.2345"
float(a)
1.2345