0

我正在尝试从文本文件中的大量域列表中删除子域。该脚本有效,但仅适用于列表中的最后一个域。我知道问题出在循环中,但无法查明确切的问题。感谢您的帮助:)

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”。唯一的问题是它不会对列表中的每个域都执行此操作 - 只有最后一个域。

4

3 回答 3

2

您在每次循环迭代中覆盖 t,因此自然只有最后一次迭代的值保留在 t 中。而是将字符串放入带有 list.append 的列表中。

于 2013-01-12T18:39:47.850 回答
2

您想要的是通过修改旧列表的元素来构建一个新列表,幸运的是,Python 具有列表理解- 非常适合这项工作。

with open("domainlist.txt", "r") as datafile:
    modified = ['.'.join(x.split('.')[-2:]) for x in datafile]

这与创建列表并在 for 循环中向其中添加项目的行为完全相同,除了更快更好地阅读。我建议观看上面链接的视频,以获取有关如何使用它们的更多信息。

请注意,file.read()将整个内容作为一个大字符串读取,您想要的可能是循环遍历文件的行,这只是通过循环遍历文件本身来完成。您当前的循环循环文件的各个字符,而不是行。

于 2013-01-12T18:40:06.120 回答
1

试试这个。更好的可读性。

with open ("domainlist.txt", "r") as datafile:
s = datafile.readlines()

t = []

for x in s:
    t.append('.'.join(x.split('.')[-2:]))

print t
于 2013-01-12T18:54:40.920 回答