2016-04-03 77 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