gpt4 book ai didi

python - 将给定文本更改为列表列表

转载 作者:行者123 更新时间:2023-11-30 23:08:10 25 4
gpt4 key购买 nike

我在给定文件中有以下文本:

1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101  
87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974

首先,我想去掉前面的123487635,并且我还想把A改为整数"1"B 转换为整数 "0"

这是我的代码:

def convert(file):
data = open(file, 'r')
list1 = []
for line in data:
line_data = line.strip().split(',')
if line_data[0] == "B":
line_data[0] = 0
else:
line_data[0] = 1
for i in range(len(line)):
datalist.append(line)
list1 = np.array(list1), float
data.close()
return list1

这是我想要的输出:

[[1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101], [87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974]]

我当前获得的输出是字符串的列表,而不是列表的列表。

最佳答案

您将获得一个 stringslist ,因为您将附加到列表中 -

datalist.append(line)

这会附加原始的 line ,而不是更改的 line_data 。此外,line_data 中的所有元素仍然是字符串(第一个元素除外),因为您永远不会将它们转换为 int。

这里最简单的方法是使用 csv 模块,将文件解析为 csv,然后从返回的每行中弹出第一个元素,然后更改第二个元素(现在是删除后的第一个元素,如你所愿)。示例-

def convert(file):
import csv
lst = []
with open('<filename>','r') as f:
reader = csv.reader(f)
for row in reader:
row.pop(0)
if row[0] == 'B':
row[0] = 0
else:
row[0] = 1
lst.append(list(map(float, row)))
return lst
<小时/>

示例/演示 -

我的 a.csv -

1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101  
87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974

代码和结果 -

>>> import csv
>>> with open('a.csv','r') as f:
... reader = csv.reader(f)
... lst = []
... for row in reader:
... row.pop(0)
... if row[0] == 'B':
... row[0] = 0
... else:
... row[0] = 1
... lst.append(list(map(float, row)))
...
'1234'
'87635'
>>> lst
[[1.0, 7.99, 10.3, 12.8, 101.0, 0.11843, 0.27276, 0.30101], [0.0, 19.69, 21.25, 130.0, 1203.0, 0.1096, 0.1599, 0.1974]]

关于python - 将给定文本更改为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31869790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com