读取包含全部站点名、经纬度信息的csv文件,按照另一个的csv文件中的部分站点名从前者提取出符合条件的站点并生成新csv
时间: 2023-10-04 16:10:45 浏览: 81
文件。
假设第一个csv文件名为“all_sites.csv”,第二个csv文件名为“selected_sites.csv”。
首先需要读取“all_sites.csv”文件中所有站点的信息,并存储到一个列表中:
```python
import csv
all_sites = []
with open('all_sites.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过第一行标题行
for row in reader:
name = row[0]
lat = float(row[1])
lng = float(row[2])
all_sites.append({'name': name, 'lat': lat, 'lng': lng})
```
接下来,需要读取“selected_sites.csv”文件中需要提取的站点名,并从“all_sites”列表中匹配出符合条件的站点,并将其信息存储到一个新的列表中:
```python
selected_sites = []
with open('selected_sites.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过第一行标题行
for row in reader:
name = row[0]
for site in all_sites:
if site['name'] == name:
selected_sites.append(site)
break
```
最后,将新的站点信息存储到一个新的csv文件中:
```python
with open('selected_sites_info.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['name', 'lat', 'lng']) # 写入标题行
for site in selected_sites:
writer.writerow([site['name'], site['lat'], site['lng']])
```
完整代码如下:
```python
import csv
all_sites = []
# 读取全部站点信息
with open('all_sites.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过第一行标题行
for row in reader:
name = row[0]
lat = float(row[1])
lng = float(row[2])
all_sites.append({'name': name, 'lat': lat, 'lng': lng})
selected_sites = []
# 读取需要提取的站点名,并匹配出符合条件的站点
with open('selected_sites.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过第一行标题行
for row in reader:
name = row[0]
for site in all_sites:
if site['name'] == name:
selected_sites.append(site)
break
# 将新的站点信息存储到新的csv文件中
with open('selected_sites_info.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['name', 'lat', 'lng']) # 写入标题行
for site in selected_sites:
writer.writerow([site['name'], site['lat'], site['lng']])
```
阅读全文