我正在尝试从文本文件中的大型域名列表中删除子域名。该脚本可以工作,但仅适用于列表中的最后一个域。我知道问题出在循环中,但无法查明extact问题。感谢您的任何帮助:)
with open ("domainlist.txt", "r") as datafile:
s = datafile.read()
for x in s:
t = '.'.join(s.split('.')[-2:])
print t
这将采用“example.test.com”和“return test.com”。唯一的问题是它不会对列表中的每个域执行此操作 - 只有最后一个域。
答案 0 :(得分:2)
您在每次循环迭代中覆盖t,因此自然只有最后一次迭代的值保留在t中。 INstead将字符串放在list.append列表中。
答案 1 :(得分:2)
你想要的是建立一个新的列表,通过修改旧列表的元素,幸运的是,Python有the list comprehension - 非常适合这项工作。
with open("domainlist.txt", "r") as datafile:
modified = ['.'.join(x.split('.')[-2:]) for x in datafile]
这与创建列表并在for循环中向其添加项目完全相同,除了更快更好读取。我建议观看上面链接的视频,了解有关如何使用它们的更多信息。
请注意file.read()
将整个内容作为一个大字符串读取,您想要的可能是循环遍历文件的行,这只是通过循环遍历文件本身来完成。您当前的循环是文件的各个字符,而不是行。
答案 2 :(得分:1)
试一试。更好的可读性。
with open ("domainlist.txt", "r") as datafile:
s = datafile.readlines()
t = []
for x in s:
t.append('.'.join(x.split('.')[-2:]))
print t