在Python中,给定带有一些数据和URL的文本文件,只读取文本文件的URL的最简单方法是什么?

时间:2015-03-26 10:02:03

标签: python-2.7

在python中我想在这样的文本文件中读取url,但是超过1000行。我怎么才能只拿走每一行的网址?我需要将照片下载到我的数据集中。 感谢

=============

  

Lexi Ainsworth 1 1   http://cdn.soaps.sheknows.com/images/news/22537_1_15562.jpg 45,50,174,179 571435cb57e518ae0cc5855eb8f1bea0b89d447d8ad7f9379fbfb3ab794333f5   Lexi Ainsworth 2 2   http://trialx.com/curetalk/wp-content/blogs.dir/7/files/2011/10/celebrities/Lexi_Ainsworth-1.jpg 130,112,396,378

3 个答案:

答案 0 :(得分:0)

你确实遇到了一个难题,因为网址可以是例如括在括号中。你怎么知道右括号是URL的一部分还是不是URL的一部分?

这听起来像是正则表达式的工作,但不幸的是它并不漂亮而且并不完美。有关问题困难原因的一些示例和评论,请参阅http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/

请参阅此示例了解某些有用的内容:

re.match('.*(https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[A-Za-z0-9+&@#/%=~_|])', 'abc http://www.google.fi def').groups(0)

答案 1 :(得分:0)

相对于空格拆分整个字符串,并选择以http / https开头的所有子字符串?我假设您的所有意图和目的都限于这两个协议。

如果您不知道该行是否以完整超链接结束,或者超链接是否在下一行继续,则会出现问题。

答案 2 :(得分:0)

好的,我明白了,谢谢你的帮助,我把代码放在这里,也许是因为有人可以提供帮助。仅使用网址

创建一个txt
#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

# read the original text
 f=file("yourtextfile.txt", "r")
 content=f.read().splitlines()
 f.close()

# create the new file to save the url's
 f = file("newfile.txt","w")
 f = open("newfile.txt","w")
# for every line in the text
 for line in content:
    a = line
    contador = 0
    contador2 = 1
    for charac in a:
        # for every character in the line
        if charac == "\t" :
            # if the next characters after \t are http we copy the url till other \t appear
            if a[contador2:contador2+4] == 'http':
                url = ""
                while a[contador2] != "\t":
                    url = url + a[contador2]
                    contador2 = contador2+1

                f.write(url + '\n')
         contador = contador +1
         contador2 = contador2 +1
 f.close()