多问题

时间:2016-08-04 20:15:41

标签: python replace

我从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 ??

制作一个点列表

2 个答案:

答案 0 :(得分:1)

问题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

问题2和4

假设您的文件内容与

类似
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个元素,表示您的xy坐标分:

[[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)