我从txt读取数据。第一行是行的标签,第二行是结束数据。
Q1)我如何跳过第1行?
数据是34,5而不是34.5,所以我不能使用float() 我尝试str.replace()但没有成功
Q2)转换中的任何其他想法或建议?
Q3)我通过QGIS使用python作为脚本。任何想法如何打断"运行"脚本??
我现在写的代码:
import string
X=[]
Y=[]
with open('D:/test_data/CLOUDS1.txt') as f:
content = f.readlines()
for line in content:
row = line.split()
X.append(row[0])
Y.append(row[1])
for i in X,Y:
print i
for j in Y:
j.replace(',' , '.')
print j
Q4)我如何从X,Y ??
制作一个点列表答案 0 :(得分:1)
如果要跳过第一行,则必须从缓冲区中读取它。如果您不需要列标题,请不要将结果存储到变量中:
with open('D:/test_data/CLOUDS1.txt') as f:
f.readline() # Reads the first line but does not store the result
content = f.readlines() # Reads the rest of the lines
假设您的文件内容与
类似x_coord y_coord
23,4 45,6
15,6 24,1
65,2 96,03
更换字符串的某些部分时,字符串不会就地更改。您必须将替换调用的结果分配给新变量并使用它:
points = []
for l in content:
parts = l.split()
x = float(parts[0].replace(',', '.'))
y = float(parts[1].replace(',', '.'))
points.append([x, y])
或者,以浓缩形式:
points = [[float(p.replace(',', '.')) for p in l.split()] for l in content]
两种情况下的结果都是二维列表(即列表列表),其中外部列表中的每个元素都是一个列表,其中包含2个元素,表示您的x
和y
坐标分:
[[23.4, 45.6], [15.6, 24.1], [65.2, 96.03]]
答案 1 :(得分:0)
1
替换:
content = f.readlines()
for line in content:
使用:
header = f.readline()
for line in f:
4
zip(X,Y)