【问题标题】:Programmatically surrounding a Python input in quotes以编程方式将 Python 输入括在引号中
【发布时间】:2015-07-01 19:18:39
【问题描述】:

使用 netaddr Python 库教程 (https://pythonhosted.org/netaddr/tutorial_01.html) 我正在创建一个程序,该程序允许用户输入一个添加到列表中的 IP 地址,唯一的问题是它需要首先转换为 IP 对象。

ip = input('Enter a valid IP Address/Subnet: ')
ip_list = IPNetwork(ip)
print('You have selected: ', ip_list)

当我运行程序并输入时:

192.168.1.1

我明白了

> Traceback (most recent call last):
  File "C:\Python27\IPAddress.py", line 4, in <module>
    ip = input('Enter a valid IP Address/Subnet: ')
  File "<string>", line 1
    192.168.1.1
        ^ SyntaxError: invalid syntax

但是,当我将 IP 用引号括起来时,它似乎可以工作

'192.168.1.1'

我得到了我想要的结果

('您已选择:', IPNetwork('192.168.1.1/32'))

我的问题是如何允许用户输入 IP 地址而不必自己用引号括起来,即它将以编程方式完成

【问题讨论】:

  • 是否会将输入作为字符串,在前后附加一个单引号,然后将其放入 IPNetwork 工作?
  • 为什么不使用 raw_input?它没有这个错误。
  • 您使用的是 Python 3 风格的 Python。为什么不直接使用 Python 3? (在 Python 3 中,print 是一个函数,input 返回一个字符串——相当于 Python 2 的 raw_input。)

标签: python string ip


【解决方案1】:

我猜你正在使用 Python 2。使用 raw_input 而不是 input,它会起作用。使用input,如果您输入一个数字,您将获得一个数字类型(int 用于整数,float 用于浮点等)。 IP 地址使事情变得混乱,因为它不明白为什么存在多个小数点。

【讨论】:

  • 谢谢!计时器到时我会立即接受答案
  • @CMac:或者只使用 Python 3。看来这就是您的参考或教程使用的。
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多