我需要从文本文件中删除所有网址。我读了文件,我逐行迭代,我写了一个干净的文件。但是下面的代码表现得很奇怪。它删除原始文件的第一行并总共添加新的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())
答案 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 ?