2017-02-04 4 views
3

Я пытаюсь получить цифры от второго последнего столбца в этом текстовом файле URL: http://services.swpc.noaa.gov/text/wing-kp.txtКак получить последние символы из удаленного текстового файла с помощью Python?

Мне нужно только последнее значение во второй последней колонке в самом конце файла.

Я попробовал несколько различных образцов-кодов в Python 3

Этот код получить только мне определенное количество символов, начиная с начала файла (.4?):

# coding: utf-8 
import urllib.request 
req = urllib.request.Request('http://services.swpc.noaa.gov/text/wing-kp.txt') 
with urllib.request.urlopen(req) as response: 
the_page = response.read(100) 
print (the_page) 

Я пробовал функцию .seek, но он возвращал значение, которое я не мог распознать.

В следующем коде я сначала попытался использовать .seek непосредственно с веб-страницы, но это не сработало, поэтому я попытался сначала сохранить файл, а затем прочитать из файла без каких-либо ограничений.

# coding: utf-8 

import urllib.request 

req = urllib.request.Request('http://services.swpc.noaa.gov/text/wing-kp.txt') 
with urllib.request.urlopen(req) as response: 
    open('data.txt', 'wb').write(urllib.request.urlopen(req).read()) 


file = open('data.txt' , 'rb+') 
data = file.seek(-5, 2) 
file.close() 
print (data) 

ответ

3

Если вам нужно только второе последнее значение, вы могли бы сделать это следующим образом:

file = open('data.txt' , 'rb+') 
data = file.readlines() 
file.close() 
data = [i for i in str(data[-1]).strip().split(" ") if i != ''][-2] 

С file.readlines() мы получаем список всех строк, в которых мы можем взять последний путем индексации с [-1]. Затем мы можем просто разбить пробелы и построить новый список со всеми непустыми строками, где теперь у нас есть второй последний столбец как второй последний элемент списка. Это предполагает, что нет пробелов в значения для последних двух столбцов и не работает для синтаксического анализа всех столбцов, так как другие данные, такие как даты, также разделяются пробелами.

+0

Спасибо за ваш ответ и хорошее описание! Это то, что я искал. –

2

Использование requests, а не urllib. Предполагает, что вам не нужен файл на диске:

import requests 
url = "http://services.swpc.noaa.gov/text/wing-kp.txt" 
data = [x for x in requests.get(url).content.rstrip().split("\n")[-1].split(" ") if x][-2] 

Версия командной строки, потому что почему бы и нет? :)

$ python -c 'import requests; print [x for x in requests.get("http://services.swpc.noaa.gov/text/wing-kp.txt").content.rstrip().split("\n")[-1].split(" ") if x][-2]' 
2.33