2016-04-03 81 views
0

我有一个简单的问题:我想从文件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]”这一行中调整它?

+0

所以,你正在寻找有它没有 '\ n'? – idjaw

回答

2

您正在寻找从每一行,你可以很容易地做到使用str可用strip方法strip换行字符:

当你得到你的数据在searchlines,做:

searchlines[i+1].strip() 

要看到,它实际上是删除,请检查repr

print(repr(P)) 

你甚至可以做到这一点repr打印之前和应用strip()看看发生了什么叫那条上时。

考虑你有文本的结构,你正在寻找让一个列表,这样,你使用loadsjson做到这一点:

json.loads(searchlines[i+1].strip()) 
+0

谢谢,那个上帝摆脱了\ n,我该如何摆脱''?我希望P是[200.0,100.0],现在它仍然是回报'[200.0,100.0]'。 – Henry

+0

@亨利我的答案已经更新,包括已经。检查最后一行。 – idjaw

+1

真棒,有用! – Henry

2

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

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

谢谢,那个上帝摆脱了\ n,我该如何摆脱''?我希望P是[200.0,100.0],现在它仍然是回报'[200.0,100.0]'。 – Henry

+0

@Henry您使用json.loads。检查我的答案。 – idjaw

+0

@Henry你可以在@idjaw的回答或我们的're'中使用'json.loads'来匹配你想要的数字。 – KIDJourney

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 
+0

不应该使用'eval'作为建议的答案,并且不应该用于一般情况。 – idjaw

+0

我是python的初学者,我想理由....为什么? – Milor123

+0

当然。最好阅读[this](http://stackoverflow.com/a/1832957/1832539)。查找“为什么在python中评估不好的练习”。其实在很多语言中,你会发现不使用eval的理由。 – idjaw