从文本文件中删除URL

时间:2016-08-06 12:43:10

标签: regex python-3.x url

我需要从文本文件中删除所有网址。我读了文件,我逐行迭代,我写了一个干净的文件。但是下面的代码表现得很奇怪。它删除原始文件的第一行并总共添加新的3行。最重要的是它不会删除网址。

import sys
import re

sys.stdout = open('text_clean.txt', 'w')

with open("text.txt",encoding="'Latin-1'") as f:
    rep = re.compile(r"""
                        http[s]?://.*?\s
                        |www.*?\s
                        |(\n)
                        """, re.X)
    non_asc = re.compile(r"[^\x00-\x7F]")
    for line in f:
        non = non_asc.search(line)
        if non:
            continue
        m = rep.search(line)
        if m:
            line = line.replace(m.group(), "")
            if line.strip():
                print(line.strip())      

1 个答案:

答案 0 :(得分:1)

你可以用""替换任何比赛。使用正则表达式,它可能是最有效的方法

import re
new_file = open('text_clean.txt', 'w')
with open("text.txt",encoding="'Latin-1'") as f:
    text = re.sub(r'(?:(?:http|https):\/\/)?([-a-zA-Z0-9.]{2,256}\.[a-z]{2,4})\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?',"",f.read(),flags=re.MULTILINE)
    text = '\n'.join([a for a in text.split("\n") if a.strip()])
    new_file.write(text)

new_file.close()   

我使用的测试示例:

asdas
d
asd
asd
https://www.google.com
http://facebook.com
facebook.com
google.com
dasd.asdasd.asd //this is url too ? 

输出:

asdas
d
asd
asd
 //this is url too ?