【发布时间】:2021-04-08 01:32:21
【问题描述】:
我正在尝试在导出的 csv 中翻转 lat long,但很难让 python 识别行以重新排序它们。需要以下数据来读取 W#### N#####, W#### N#### 以便在我使用 Linestring() 完成 WKT 的格式化后,QGIS 的 WKT 图层导入将正常工作。
Example Data:
name,start_y,start_x,end_y,end_x
name2: 10,N 42.50105, W 122.87444, N 42.50079, W 122.74144
name3: 11,N 42.49398, W 123.47816, N 42.49453, W 123.29451
name4: 12,N 42.48980, W 123.47812, N 42.49036, W 123.29027
name5: 13,N 42.49403, W 123.20165, N 42.49411, W 123.12354
我尝试使用的代码是:
with open(mycsv.csv', 'r') as infile, open(mycsv.csv', 'a') as outfile:
# output dict needs a list for new column ordering
writer = csv.DictWriter(outfile, fieldnames= ['name', 'start_x', 'start_y', 'end_x', 'end_y'], extrasaction='ignore', delimiter = ',')
# reorder the header first
writer.writeheader()
for row in csv.DictReader(infile):
# writes the reordered rows to the new file
writer.writerow(row)
当我使用此代码时,csv 保持不变。于是我跑了:
import sys
f = open(sys.argv[0],'r')
reader = csv.reader(f,delimiter=",")
num_cols = len(next(reader)) # Read first line and count columns
print(num_cols)
它告诉我它只计算 1 列,因此第一个公式不起作用是有道理的,因为它不是在单独的列中读取 csv,而是在一行中读取。我错过了什么? Python 3.9 是我正在使用的。提前致谢!
ps,这是我的第一个 python 程序,我没有接受过正规的编码教育,所以请原谅任何新手错误
【问题讨论】:
-
您的 csv 有 5 个标题,但数据中只有 3 列,但您说它只计算了一列,因此请确保您向我们提供了输入的 exact 内容文件。
-
抱歉,我提供的示例数据集中缺少一些“,”。这就是数据在 python 中的显示方式。标题应该与我现在理解的列相匹配。
-
最好不要手动输入您的测试输入和代码,而是剪切并粘贴您的确切数据/代码来重现您的问题。例如,缩进错误,代码中缺少单引号。