如何使用Python从远程文本文件中检索最后一个字符?

时间:2017-02-04 11:17:18

标签: python python-3.x urllib

我正在尝试从此txt文件中的倒数第二列获取数字 网址:http://services.swpc.noaa.gov/text/wing-kp.txt

我只需要文件最末尾的倒数第二列中的最后一个值。

我在Python 3(.4?)

中尝试了一些不同的示例代码

此代码仅从文件开头开始获取特定数量的字符:

function functionname() {

   var previousppagesrc =variable1;
   var language =variable2;
   var folderName =variable3;


    document.getElementById("backbtnId").href = "" + variable1+ "?language=" + variable2+ "?studyset=" + variable3+ "";

我尝试过.seek函数,但它返回了一个我无法识别的值。

在下面的代码中,我首先尝试直接从网页上使用.seek,但它没有工作,所以我尝试先保存文件然后从文件中读取没有/有限的成功。< / p>

$("#search_form").validate({
        rules: {
            "origin[]": "required",
            "destination[]": "required",
            "departure[]": "required",
            return_date: "required",
            "origin[]": {
                required: true
            },
            "destination[]": {
                required: true
            },
            "departure[]": {
                required: true
            },
            return_date : {
                required: true
            }
        },
        messages: {
            "origin[]": "required",
            "destination[]": "required",
            "departure[]": "required",
            return_date: "required"
        },
        errorElement: "em",
        errorPlacement: function (error, element) {
            error.addClass("help-block");
            element.parents(".input-group").addClass("has-feedback");
            if (!element.next("span")[ 0 ]) {
                $("<span class='glyphicon glyphicon-remove form-control-feedback'></span>").insertAfter(element);
            }
        },
        success: function (label, element) {
            if (!$(element).next("span")[ 0 ]) {
                $("<span class='glyphicon glyphicon-ok form-control-feedback'></span>").insertAfter($(element));
            }
        },
        highlight: function (element, errorClass, validClass) {
            $(element).parents(".input-group").addClass("has-error").removeClass("has-success");
            $(element).next("span").addClass("glyphicon-remove").removeClass("glyphicon-ok");
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).parents(".input-group").addClass("has-success").removeClass("has-error");
            $(element).next("span").addClass("glyphicon-ok").removeClass("glyphicon-remove");
        },
        submitHandler: function (form) {
            form.submit();
        }
    });

2 个答案:

答案 0 :(得分: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]进行索引来获取最后一行。然后,我们可以简单地用空格分割并构造一个包含所有非空字符串的新列表,其中我们现在将第二个最后一列作为列表的倒数第二个元素。这假设最后两列的值中没有空格 ,并且不能解析所有列,因为其他数据(如日期)也用空格分隔。

答案 1 :(得分: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