我正在写一篇文章并遇到了障碍。可能有一种更有效的方法,但我对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
答案 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
。