我正在阅读一些日志文件,并有一个这样的网址列表:
url看起来像每个网址后的新行
http://domain1.com
http://domain2.com
http://domain3.com
http://domain4.com
我现在想要创建一个元组并为每个网址添加一个值。所有数值都相同。 它看起来应该是这样的。
('http://domain1.com', 3)
('http://domain2.com', 3)
('http://domain3.com', 3)
('http://domain4.com', 3)
最后,为了进一步处理,我需要一个看起来像这样的元组列表:
[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com',3)...]
这是我自己尝试的:
#split urls with comma
separated_urls = url.split(', ')
num__of_lines = sum(1 for line in separated_urls)
#make a list of 3s for the length of the url list
list_of_threes = [3] * num__of_lines
combined_list = zip(separated_urls, list_of_threes)
final_list = tuple(combined_list)
print final_list
这给了我以下输出:
(('http://domain1.com', 3),)
(('http://domain2.com', 3),)
(('http://domain3.com', 3),)
(('http://domain4.com', 3),)
有人可以给我一点帮助,以获得所需的输出吗?
由于
答案 0 :(得分:1)
使用列表理解
#split urls with comma
separated_urls = url.split('\n')
final_list = [(url,3) for url in separated_urls]
编辑:使用split('\n')
或(split()
作为默认换行符)将网址列表拆分而不是split(', ')
答案 1 :(得分:1)
你可以轻松地以两种方式做到这一点。
1)老派循环方式:
output_list = []
for url in url.split():
output_list.append((url, 3))
2)或者列表理解方式,正如@Trengot所说:
output_list = [(url, 3) for url in url.split()]
如果您希望对列表进行任何更改并在创建output_list之前检查更多内容,那么旧学校方式更适合。对于简单的情况(即使进行条件检查),列表推导也是可行的方法: - )
编辑:阅读你的评论,我想你需要通过“\ n”字符而不是逗号分隔它们。相应地更新了代码,因为默认情况下拆分用“\ n”分割字符。
答案 2 :(得分:0)
final_list = tuple(combined_list)
中的正在将list
转换为tuple
。
因此,如果您希望输出为list
,列表项为tuple
,那么您可以删除上述语句。
通过代码中的print combined_list
语句进行检查。
>>> urls = """
... http://domain1.com
... http://domain2.com
... http://domain3.com
... http://domain4.com"""
>>> print [(i, 3) for i in urls.split('\n') if i.strip()]
[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com', 3), ('http://domain4.com', 3)]
答案 3 :(得分:0)
很高兴您找到了答案。 您的代码是准确的,直到以下行
url = "http://domain1.com, http://domain2.com, http://domain3.com, http://domain4.com"
separated_urls = url.split(', ')
list_of_threes = [3] * len(separated_urls)
combined_list = zip(separated_urls, list_of_threes)
问题是你的演员。只需将combined_list
投射到list
print (list(combined_list))
和宾果,你得到你的输出
[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com', 3), ('http://domain4.com', 3)]