如何将一个列表中的项目逐个添加到另一个列表中?

2024-09-29 22:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,其中有些内容如下所示:

name,x,y
N1,30.2356,12.5263
N2,30.2452,12.5300

……而且还在继续。你知道吗

这就是我尝试的,我从.csv中调用它们,并分别添加到不同的列表中。你知道吗

import csv

nn = []
xkoor = []
ykoor = []
coord = []
with open('C:/Users/Mert/Desktop/py/transformation/1.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        nn.append(row[0].split(','))
        xkoor.append(row[1].split(','))
        ykoor.append(row[2].split(','))

j = 1
for i in range(len(xkoor)):
    for j in range(len(ykoor)):

我想列一个清单:

coord = [30.2356,12.5263],[30.2452,12.5300],....

我不知道该怎么做。有什么想法吗?你知道吗


Tags: 文件csvin内容forlenrangenn
3条回答

默认情况下,csv读取器应按逗号为您拆分行:

import csv

with open('somefile.csv') as fh:
    reader = csv.reader(fh)
    for row in reader:
        print(row)

# outputs
['name', 'x', 'y']
['N1', '30.2356', '12.5263']
['N2', '30.2452', '12.5300 ']

记住这一点,如果您只是想在坐标上循环,可以使用解包来获取xy,然后通过附加元组来构建列表:

import csv

coords = []

with open('somefile.csv') as fh:
    reader = csv.reader(fh)
    next(reader) # skips the headers
    for row in reader:
        name, x, y = row
        coords.append((float(x), float(y)))

# then you can iterate over that list like so
for x, y in coords:
    # do something

座标看起来像:

[(30.2356, 12.5263), (30.2452, 12.53)]

您不应该自己用逗号分割字符串,因为csv.reader已经为您这样做了。只需遍历csv.reader生成器并根据需要解压列:

reader = csv.reader(f)
next(reader)
coord = [[float(x), float(y)] for _, x, y in reader]

看来你把事情复杂化了。你知道吗

如果您所要做的只是创建一个仅包含X和Y值的坐标数组,那么您可以这样做:

import csv
coord = []
with open('C:/Users/Mert/Desktop/py/transformation/1.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        rowlist = row.split(',')
        coord.append(rowlist[1:3])
print(coord)

您所需要做的就是在每行的基础上提取一个子集,并将其附加到coord数组中。无需每次调用行拆分,也无需为轴创建单独的数组。你知道吗

K.I.S.S!你知道吗

(还有一点建议——不要问PII。无需使用整个windows文件路径,只需指明它是CSV文件。我不需要知道你的名字来回答这个问题!)你知道吗

相关问题 更多 >

    热门问题