2010-02-04 3 views
1

У меня есть файл /tmp/gs.pid с содержаниемпитон файл чтения

client01: 25778 

Я хотел бы получить второе слово из него. т.е. 25778.

Я попытался под кодом, но это не сработало.

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

спасибо всем сейчас его работу. –

ответ

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, вы можете извлечь 2-ую часть с

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:', хотя вам придется разделить, а не использовать индекс поиска в этом случае. –

Смежные вопросы