将csv文件保存为字典中的数组



我有一个包含这些数据的csv文件:

Sensor 1;;
x;o;o
o;x;x
x;x;o
Sensor 2;;
o;x;o
x;x;o
o;o;o
Sensor 3;;
x;o;x
x;x;o
x;x;x

程序应该做的是询问您想要哪个传感器,并返回传感器名称,并以字典中的数组形式显示路径。一个示例如下:

Sensor 1 : press 1
Sensor 2 : press 2
Sensor 3 : press 3
{Sensor 1: [[x,o,o],[o,x,x],[x,x,o]]}

这是我试过的代码:

f=open('file.csv','r')
dic={}
key=""
s=f.readlines()
for line in s:
row=line.split(';')
if "Sensor" not in line:
if key:
dic[key].append(row)
else:
key=row[0]
dic[key]=[]
print(dic)

代码不能有导入

您可以尝试解析字符串以获得所需的输出

data = open('temp.csv').readlines()
current_sensor = None
sensor_dict = {}
for each_line in data:
if each_line.startswith('Sensor'):
sensor_name = each_line.replace(';', '').replace('n', '')
current_sensor = sensor_name
sensor_dict[current_sensor] = []
else:
sensor_dict[current_sensor].append(each_line.replace('n', '').split(';'))
# print(sensor_dict)
print("""Sensor 1 : press 1
Sensor 2 : press 2
Sensor 3 : press 3
""")
user_input = 'Sensor ' + input('Which sensor you want (1,2,3): ')
print(sensor_dict[user_input])
Sensor 1 : press 1
Sensor 2 : press 2
Sensor 3 : press 3
Which sensor you want (1,2,3): 1
[['x', 'o', 'o'], ['o', 'x', 'x'], ['x', 'x', 'o']]

问题是您已将dic定义为列表[],但它应该是字典dict()

除此之外,您可能还希望使用rstrip()来修剪n字符并分隔行以获得列表。目前,您正在将每一行str对象附加到每个传感器的列表中。

f=open('file.csv','r')
dic=dict()                # this is a dictionary
s=f.readlines()
key = ""
for line in s:
if "Sensor" not in line:
if key:
line = line.rstrip()
line = line.split(';')
dic[key].append(line)
else:
row = line.split(';')
key=row[0]
dic[key]=[]
print(dic['Sensor 1'])

根据注释编辑。

如果您需要更多的索引级别,您可以修改生成的列表,添加一个带有传感器编号的新键。

f=open('file.csv','r')
dic=dict()
s=f.readlines()
key = ""
for line in s:
if "Sensor" not in line:
if key:
line = line.rstrip()
line = line.split(';')
dic[key].append(line)
else:

row = line.split(';')
key=row[0]
dic[key]=[]
sensor_dict = dict()
for k, v in dic.items(): 
sensor_dict[k.split()[-1]] = {k: v}
user_input = input('Which sensor you want (1,2,3): ')
print(sensor_dict[user_input])

输出:

Which sensor you want (1,2,3): 3
{'Sensor 3': [['x', 'o', 'x'], ['x', 'x', 'o'], ['x', 'x', 'x']]}

相关内容

  • 没有找到相关文章

最新更新