在python中的url中使用变量

时间:2015-05-28 09:05:31

标签: python

对不起这个非常基本的问题。我是Python的新手,并试图编写一个可以打印URL链接的脚本。 IP地址存储在名为list.txt的文件中。我该如何在链接中使用变量?你能帮忙吗?

# cat list.txt

192.168.0.1
192.168.0.2
192.168.0.9

脚本:

import sys
import os

file = open('/home/list.txt', 'r')

for line in file.readlines():
    source = line.strip('\n')
    print source

link = "https://(source)/result”
print link

输出:

192.168.0.1
192.168.0.2
192.168.0.9
https://(source)/result

预期产出:

192.168.0.1
192.168.0.2
192.168.0.9
https://192.168.0.1/result
https://192.168.0.2/result
https://192.168.0.9/result

5 个答案:

答案 0 :(得分:6)

您需要传递实际变量,您可以迭代文件对象,这样您就不需要使用readlines并使用with打开文件,因为它会自动关闭它们。如果要查看每一行,还需要在循环内打印,str.rstrip()将从每行末尾删除任何换行符:

with open('/home/list.txt') as f:  
    for ip in f:
        print "https://{0}/result".format(ip.rstrip())

如果您想存储所有链接,请使用list comprehension

with  open('/home/list.txt' as f:
    links = ["https://{0}/result".format(ip.rstrip()) for line in f]

对于python 2.6,你必须使用str.format传递位置参数的数字索引,{0}

您还可以使用名称传递给str.format:

with open('/home/list.txt') as f:
    for ip in f:
        print "https://{ip}/result".format(ip=ip.rstrip())

答案 1 :(得分:2)

试试这个:

lines = [line.strip('\n') for line in file]

for source in lines:
    print source

for source in lines:
    link = "https://{}/result".format(source)
    print link

您刚才描述的功能通常称为string interpolation。 在Python中,这称为string formatting

Python中有两种字符串格式:旧样式和新样式。 我在上面的示例中显示的是新样式,我们使用名为format的字符串方法进行格式化。 旧样式使用%运算符,例如。 "https://%s/result" % source

答案 2 :(得分:2)

获取循环内部的链接,您不会向其追加数据,而是每次都分配给它。使用这样的东西:

file = open('/home/list.txt', 'r')

for line in file.readlines():
    source = line.strip('\n')
    print source
    link = "https://%s/result" %(source)
    print link

答案 3 :(得分:2)

对字符串使用格式说明符,并且仅将链接打印部分放在for循环中 像这样的东西:

import sys
import os
    file = open('/home/list.txt', 'r')
    for line in file.readlines():
        source = line.strip('\n')
        print source
        link = "https://%s/result”%source
        print link

答案 4 :(得分:1)

import sys
import os

file = open('/home/list.txt', 'r')

for line in file.readlines():
    source = line.strip('\n')
    print source
    link = "https://" + str(source) + "/result”
    print link