我正在尝试对csv文件中的特定列或键进行排序。
文本文件如下:
NameID, StudentName, University, Phone, State
SROGE, Steve Rogers, UofI, 324324423, New York
JSNOW, Jon Snow, UofWinterfell, 324234423, Westeros
DTARG, Daenerys Targaryen, Dragonstone, 345345, NULL
现在我有一个函数,它使用DictReader读取csv文件,然后将其打印。另一个函数要求用户输入,它应该显示一个排序的列:
def load_data(file_name):
university_data=[]
with open("file.csv", mode='r') as csv_file:
csv_reader = csv.DictReader(csv_file)
for col in csv_reader:
university_data.append(dict(col))
print(university_data)
return university_data
def main():
filename='file.csv'
university_data = load_data(filename)
print('[1] University\n[2] Student Name\n[3] Exit\n[4] Search')
while True:
choice=input('Enter choice 1/2/3? ')
if choice=='1':
for university in university_data:
print(university[2])
elif choice=='2':
for university in university_data:
print(university[1])
elif choice =='3':
print('Thank You')
break
else:
print('Invalid selection')
main()
我需要帮助的是制作一个用户选择StudentName(2)的函数(例如史蒂夫·罗杰斯,乔恩·斯诺,丹妮莉丝·坦格利安),它将显示字典的排序列表。
输出应为:
{'NameID': 'DTARG', ' StudentName': ' Daenerys Targaryen',' University': ' Dragonstone', ' Phone': ' 345345', ' State': ' NULL'}
{'NameID': 'JSNOW', ' StudentName': ' Jon Snow', ' University': ' UofWinterfell', ' Phone': ' 324234423', ' State': 'Westeros'}
{'NameID': 'SROGE', ' StudentName': ' Steve Rogers', ' University': ' UofI', ' Phone': ' 324324423', ' State': ' NewYork'}
现在如何根据我的程序使功能以排序方式显示?
答案 0 :(得分:0)
您仍然有一些小问题。
首先,csv文件似乎在分隔符后包含空格。解析时需要选项skipinitialspace=True
。
接下来,university_data
是字典的列表(如果为collections.OrderedDict
),键是NameID,StudentName,大学,电话和州。
所以您需要:
def load_data(file_name):
...
csv_reader = csv.DictReader(csv_file, skipinitialspace=True)
...
def main():
...
if choice=='1':
for university in university_data:
print(university['University'])
...
与其他元素相同...