抓住一条线的内容

时间:2016-04-03 14:51:23

标签: python

我有一个简单的问题:我想从文件x中获取一行的内容。我的文件x看起来像这样:

PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 353.20889]
PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 300.0]

我在Python中的脚本如下所示:

h = open("x.gcode", "r")
searchlines = h.readlines()
file = ""

for i, line in enumerate(searchlines):
    if "PointXY" in line:
        P = searchlines[i+1]
        print(P)

我希望P只是[200.0,100.0](例如)。它现在给了我[200.0,100.0] \ n'。如何在行中调整此项" P = searchlines [i + 1]"?

3 个答案:

答案 0 :(得分:2)

您可以使用str.strip()删除\n

for i, line in enumerate(searchlines):
    if "PointXY" in line:
        P = searchlines[i+1].strip()
        print(P)

答案 1 :(得分:2)

您希望strip每行中的换行符,您可以使用strip的{​​{1}}方法轻松完成:

当您在str中获取数据时,请执行以下操作:

searchlines

要查看它实际已被删除,请检查searchlines[i+1].strip()

repr

您甚至可以在应用 print(repr(P)) 之前和之后执行repr打印,以查看调用该条带时发生的情况。

考虑到您拥有的文字结构,您希望将其设为列表,因此,您可以使用strip()中的loads来执行此操作:

json

答案 2 :(得分:0)

如果你想删除' \ n'使用这个

读取数据后

data = f.readlines()

data = map(str.strip, data)

但对于另一个你可以使用它是不必要的:

import ast
listdata = []
with open('lel.txt') as f:
    data = f.readlines()
    for x in data:
        try:
            if isinstance(ast.literal_eval(x), list):
                listdata.append(eval(x))
        except:
            pass

然后获取列表数据:

print listdata
>>>[[387.93852, 200.0], [200.0, 387.93852], [200.0, 387.93852], [200.0, 353.20889], [387.93852, 200.0], [200.0, 387.93852], [200.0, 300.0]]
print listdata[0]
>>>[387.93852, 200.0]
print listdata [0][0]
>>>387.93852