2010-02-04 111 views
1

我有文件/tmp/gs.pid與內容Python文件讀取

client01: 25778 

我想從中獲取的第二個字。 即。 25778

我試過下面的代碼,但它沒有工作。

>>> f=open ("/tmp/gs.pid","r") 
>>> for line in f: 
    ... word=line.strip().lower() 
    ... print "\n -->" , word 
+0

謝謝大家現在它的工作。 – 2010-02-04 07:24:42

回答

7

試試這個:

>>> f = open("/tmp/gs.pid", "r") 
>>> for line in f: 
    ... word = line.strip().split()[1].lower() 
    ... print " -->", word 
>>> f.close() 

它將打印小寫每一行的第二個字。 split()將把你的線和分割它的任何空格並返回一個列表,然後索引[1]將採取第二個元素的列表和lower()將結果轉換爲小寫。請注意,這將是有意義的檢查是否有就行了至少2個字,例如:

>>> f = open("/tmp/gs.pid", "r") 
>>> for line in f: 
    ... words = line.strip().split() 
    ... if len(words) >= 2: 
    ...  print " -->", words[1].lower() 
    ... else: 
    ...  print 'Line contains fewer than 2 words.' 
>>> f.close() 
1
word="client01: 25778" 
pid=word.split(": ")[1] #or word.split()[1] to split from the separator 
1

如果所有行的形式abc: def的,你可以用

提取第二部分
second_part = line[line.find(": ")+2:] 

如果不是,您需要驗證line.find(": ")確實首先返回一個非負數。

with open("/tmp/gs.pid") as f: 
    for line in f: 
     p = line.find(": ") 
     if p != -1: 
     second_part = line[p+2:].lower() 
     print "\n -->", second_part 
+0

'find()'檢查可簡化爲'if':'in line:',儘管在這種情況下您需要拆分而不是使用find索引。 – 2010-02-04 07:20:12

1
>>> open("/tmp/gs.pid").read().split()[1] 
'25778'