为了账号安全,请及时绑定邮箱和手机立即绑定

将一串值拆分为多个字符串

将一串值拆分为多个字符串

PHP
慕盖茨4494581 2023-11-09 21:23:00
我目前正在开发一个程序,该程序从 csv 文件中获取一组列表,并将它们分组在一起。我想出的程序是:List_one = []                  with open("trees.csv") as f:        skiplines = f.readline()        for line in f:          res = line.split(" ")              List_one.append(res)          for i in List_one:        (i[0]) = (i[0]).rstrip("\n")    print (List_one)我现在得到的是一组列表,但问题是这些列表是字符串,我希望它们作为浮点数。列表如下所示:[['1,8.3,70,10.3'], ['2,8.6,65,10.3'], ['3,8.8,63,10.2'], ['4,10.5,72,16.4'], ['5,10.7,81,18.8'], ['6,10.8,83,19.7'], ['7,11.0,66,15.6'], ['8,11.0,75,18.2'], ['9,11.1,80,22.6'], ['10,11.2,75,19.9'], ['11,11.3,79,24.2'], ['12,11.4,76,21.0'], ['13,11.4,76,21.4'], ['14,11.7,69,21.3'], ['15,12.0,75,19.1'], ['16,12.9,74,22.2'], ['17,12.9,85,33.8'], ['18,13.3,86,27.4'], ['19,13.7,71,25.7'], ['20,13.8,64,24.9'], ['21,14.0,78,34.5'], ['22,14.2,80,31.7'], ['23,14.5,74,36.3'], ['24,16.0,72,38.3'], ['25,16.3,77,42.6'], ['26,17.3,81,55.4'], ['27,17.5,82,55.7'], ['28,17.9,80,58.3'], ['29,18.0,80,51.5'], ['30,18.0,80,51.0'], ['31,20.6,87,77.0']]正如你们所看到的,我也不能在列表一上使用 float() ,因为列表本身就是一个完整的字符串。有没有办法可以通过索引拆分列表,这样我就得到:['1', '8.3', '70', '10.3'].....欢迎任何帮助。
查看完整描述

4 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

“line.split(',')”用“,”分割字符串并返回列表。对于字符串 '1,8.3,70,10.3' 它将返回 [1, 8.3, 70, 10.3]



查看完整回答
反对 回复 2023-11-09
?
跃然一笑

TA贡献1826条经验 获得超6个赞

你可以说:


res = line.split(" ")


# map takes a function as the first arg and a list as the second

list_of_floats = list(map(lambda n: float(n), res.split(",")))


# then you can

List_one.append(list_of_floats)

这仍然会给你一个嵌套列表,因为你在每次迭代期间推送一个列表for line in f:,但每个列表至少会是你指定的浮点数。


如果您只想获得一个平面浮点列表而不是执行初始操作,line.split(' ')您可以使用正则表达式来分割从 csv 读取的行:


import re # at the top of your file


res = re.split(r'[\s\,]', line)

list_of_floats = list(map(lambda n: float(n), res))

List_one.append(list_of_floats)


查看完整回答
反对 回复 2023-11-09
?
BIG阳

TA贡献1859条经验 获得超6个赞

如果需要,您可以用逗号分隔字符串。不过,在将它们附加到 List_one 之前,您可能应该完成所有操作。

res = [float(x) for x in line.split(" ")[0].split(",")]
List_one.append(res)

这是否如您所愿?抱歉,我不确定输入的格式是什么,所以我有点猜测


查看完整回答
反对 回复 2023-11-09
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

这可能有帮助:


l =[['1,8.3,70,10.3'], ['2,8.6,65,10.3'], ['3,8.8,63,10.2'], ['4,10.5,72,16.4']]


l2 =[]

for x in l:

    a =x[0].split(",")

    l2.append(a)

print(l2)

享受!


查看完整回答
反对 回复 2023-11-09
  • 4 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信