Python 如何使用str函数和字符串索引/切片将字符串转换为浮点值?
标题可能有点让人困惑,但我的意思是说我有一个字符串Python 如何使用str函数和字符串索引/切片将字符串转换为浮点值?,python,Python,标题可能有点让人困惑,但我的意思是说我有一个字符串s=“text,7.4,text,7.2,text,7.6,”,我想把数字7.4 7.2 7.6取出来,并将它们转换成float。如何仅使用简单的str函数(如find()或字符串索引/切片)来实现这一点 我曾尝试使用replace()删除所有逗号和单词,但遇到了数字没有隔开的问题:>7.47.27.6因此无法转换为float;我不知道如何解释这一点,因为我的字符串的间距不一致。谢谢您可以像这样一步一步地清理文本: >>s=“text,7.4,t
s=“text,7.4,text,7.2,text,7.6,”
,我想把数字7.4 7.2 7.6
取出来,并将它们转换成float。如何仅使用简单的str函数(如find()
或字符串索引/切片)来实现这一点
我曾尝试使用
replace()
删除所有逗号和单词,但遇到了数字没有隔开的问题:>7.47.27.6
因此无法转换为float;我不知道如何解释这一点,因为我的字符串的间距不一致。谢谢您可以像这样一步一步地清理文本:
>>s=“text,7.4,text,7.2,text,7.6,”
>>>列表_of_字符串=[s.strip()表示s在s.split中(“,”)如果s]
>>>列出\u字符串的\u
['text','7.4','text','7.2','text','7.6']
>>>list_of_strings=[s代表_字符串列表中的s,如果不是s.isalpha()]
>>>列出\u字符串的\u
['7.4', '7.2', '7.6']
>>>nums=[字符串列表中num的浮点(num)]
>>>努姆斯
[7.4, 7.2, 7.6]
>>>
或者,把它们放在一起:
>>[浮动(elem.strip())用于s.split(“,”)中的elem,如果是elem而不是elem.strip().isalpha()]
[7.4, 7.2, 7.6]
>>>
如果您的数字总是交替放置在字符串之间,那么您可以使用切片作为:
下面是对上述代码的逐步解释:
my_str.replace(“,”)
,
拆分列表,以使用获取单词列表。拆分(',')
start
as1
和step as2
对列表进行切片,以使用[1::2]
map(float,)
但是,如果数字在字符串中随机分布,那么您可以通过附加条件检查修改上述逻辑(这次使用列表理解),以在迭代期间将数字标识为:
>>> s =" text, 7.4, 9.5, text , 7.2, 8.6,text,7.6,"
>>> [float(n) for n in s.replace(" ", "").split(",") if n.replace('.','',1).isdigit()]
[7.4, 9.5, 7.2, 8.6, 7.6]
但是,在这种情况下,您不需要索引或切片。您可以这样做:
>>> [float(n) for n in s.split(',')[1::2]]
当项目无法转换为浮动时,您可以使用此代码并捕获异常:
l = []
for item in s.split(','):
try:
l.append(float(item.strip()))
except ValueError:
continue
print(l)
#[7.4, 7.2, 7.6]
请提供您的尝试代码。数字是否总是交替放置在字符串之间?如果您有这样一个字符串:s=“text,7.4,text,7.2,text,7.6,3.5”,会发生什么情况?@pakpe它将忽略最后一个数字。但是,我的答案是基于给定的情况是的,如果字符串位于奇数索引,它将忽略偶数索引处的所有数字,并给出ValueError。
l = []
for item in s.split(','):
try:
l.append(float(item.strip()))
except ValueError:
continue
print(l)
#[7.4, 7.2, 7.6]