python - 如何为 .csv 文件中找到的每个重复条目创建一个新列表?
问题描述
我希望创建一个名为的新列表airport_data
,其中包含基于该机场有多少条目出现在 csv 文件中的信息。
我还没有尝试过任何事情,因为我不是最好的程序员,所以我真的不知道从哪里开始。
import csv
def main():
airportname = input("What airport are you looking for?").upper()
f1 = open("airports.csv", "r", encoding="utf8")
if f1.mode == "r":
csv_f = csv.reader(f1)
airport_data = []
for row in csv_f:
if airportname in row:
airport_data.append(row[1])#Airport ICAO Code
airport_data.append(row[3])#Airport Name
f1.close()
f2 = open("runways.csv", "r", encoding="utf8")
if f2.mode == "r":
csv_f = csv.reader(f2)
for row in csv_f:
if airportname in row:
airport_data.append(row[3])#Runway Length
airport_data.append(round(float(row[12])))#Runway Heading
airport_data.append(row[8])#Runway Name
airport_data.append(row[14])#Opp Runway Name
airport_data.append(round(float(row[17])))#Airport Elevation
print(airport_data)
print("You have chosen %s (%s). The Airport Elevation is %sft and Runways %s and %s are available" % (airport_data[1],airport_data[0],airport_data[6],airport_data[4],airport_data[5]))
main()
What airport are you looking for?KLAX
['KLAX', 'Los Angeles International Airport', '8925', 83, '06L', '24R', 117]
['KLAX', 'Los Angeles International Airport', '8925', 83, '06L', '24R', 117, '10285', 83, '06R', '24L', 111]
['KLAX', 'Los Angeles International Airport', '8925', 83, '06L', '24R', 117, '10285', 83, '06R', '24L', 111, '12091', 83, '07L', '25R', 94]
['KLAX', 'Los Angeles International Airport', '8925', 83, '06L', '24R', 117, '10285', 83, '06R', '24L', 111, '12091', 83, '07L', '25R', 94, '11096', 83, '07R', '25L', 95]
You have chosen Los Angeles International Airport (KLAX). The Airport Elevation is 117ft and Runways 06L and 24R are available.
我希望它是这样的:
['KLAX', 'Los Angeles International Airport', '8925', 83, '06L', '24R', 117]
['KLAX', 'Los Angeles International Airport', '10285', 83, '06R', '24L', 111]
['KLAX', 'Los Angeles International Airport', '12091', 83, '07L', '25R', 94]
['KLAX', 'Los Angeles International Airport', '11096', 83, '07R', '25L', 95]
解决方案
airport_data
每次通过第二个循环制作一个副本。我已经调用了这个runway_data
。
此外,一旦找到您正在寻找的机场,您应该跳出第一个循环。
import csv
def main():
airportname = input("What airport are you looking for?").upper()
with open("airports.csv", "r", encoding="utf8") as f1:
csv_f = csv.reader(f1)
airport_data = []
for row in csv_f:
if airportname in row:
airport_data.append(row[1])#Airport ICAO Code
airport_data.append(row[3])#Airport Name
break
with open("runways.csv", "r", encoding="utf8") as f2:
csv_f = csv.reader(f2)
for row in csv_f:
if airportname in row:
runway_data = airport_data[:] # Copy airport data to runway
runway_data.append(row[3])#Runway Length
runway_data.append(round(float(row[12])))#Runway Heading
runway_data.append(row[8])#Runway Name
runway_data.append(row[14])#Opp Runway Name
runway_data.append(round(float(row[17])))#Airport Elevation
print(runway_data)
print("You have chosen %s (%s). The Airport Elevation is %sft and Runways %s and %s are available" % (airport_data[1],airport_data[0],runway_data[0][6],runway_data[0][4],runway_data[0][5]))
main()
推荐阅读
- mongodb - MongoDB:如何在多个集合中累积记录?
- python - Discord NameError:Command'对象没有属性'has_permissions,我该如何解决?
- lua - Lua:单行多变量声明的使用规则
- go - 如何检查提供的二进制应用程序版本是最新的
- r - 提取第一个和第二个空格之间的字符串
- javascript - 退出应用程序时,Electron App 在 Mac 上抛出意外退出错误消息
- sql - 使用 split 或 regex 解析 bigquery 中的数据
- r - R - 使用自定义行分隔符导入包装的 .txt 文件
- java - 带有 rtp 流和静止图像的 AVLCj MediaListPlayer
- php - rand() 使用 LIMIT 进行 SQL 排序