чтение файла Python - PullRequest
       4

чтение файла Python

1 голос
/ 04 февраля 2010

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

client01: 25778

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

Я пробовал приведенный ниже код, но он не работал.

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

Ответы [ 4 ]

7 голосов
/ 04 февраля 2010

Попробуйте это:

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

Он напечатает второе слово каждой строки в нижнем регистре. split() возьмет вашу строку и разделит ее на любые пробелы и вернет список, затем индексирование с помощью [1] займет элемент списка second и 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 голос
/ 04 февраля 2010
>>> open("/tmp/gs.pid").read().split()[1]
'25778'
1 голос
/ 04 февраля 2010
word="client01: 25778"
pid=word.split(": ")[1] #or word.split()[1] to split from the separator
1 голос
/ 04 февраля 2010

Если все строки имеют форму 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...