Python拆分,替换

时间:2013-12-10 22:58:29

标签: python

我正在写一篇文章并遇到了障碍。可能有一种更有效的方法,但我对Python很新。我正在尝试创建用户生成的IP地址列表。我正在使用print来查看生成的值是否正确。当我运行此代码时,print ip_start具有相同的值,并且不会更新。我相信这是一个相当简单的修复,但我有一个主要的脑锁。

ip_start = raw_input('Please provide the starting IP address for your scan --> ')
start_list = ip_start.split(".")
ip_end = raw_input('Please provide the ending IP address for your scan --> ')
end_list = ip_end.split(".")
top = int(start_list[3])
bot = int(end_list[3])
octet_range = range(top,bot)
print octet_range
for i in octet_range:
    print i
    print "This the top:" + str(top)
    ip_start.replace(str(top),str(i))
    print ip_start

2 个答案:

答案 0 :(得分:4)

字符串上的replace方法不会就地修改字符串。实际上, nothing 就地修改了字符串;他们是不可变的。这在教程部分Strings中进行了解释。

它的作用是返回一个新字符串,并在其上完成替换。来自the docs

  

str replace [,计数] )

     
    

返回字符串的副本,其中所有出现的子字符串 old 都替换为 new 。如果给出了可选参数 count ,则仅替换第一个 count 次出现。

  

所以,你想要的是:

ip_start = ip_start.replace(str(top),str(i))

答案 1 :(得分:0)

ip_start.replace(...) - 与其他str方法一样 - 不会修改ip_start。相反,它会返回一个修改过的字符串,如果要更改它,则必须将其分配给ip_start