输入的工作,我想输入的形式载体“(x,y,z)
”如何使蟒蛇
s=raw_input("Enter vector (x,y,z): ")
x,y,z= s.split()
self.x= float(x)
self.y= float(y)
self.z= float(z)
现在缺少的代码?不应该分裂做这份工作?我也试过s.split("(",",",")")
,但没有成功。
输入的工作,我想输入的形式载体“(x,y,z)
”如何使蟒蛇
s=raw_input("Enter vector (x,y,z): ")
x,y,z= s.split()
self.x= float(x)
self.y= float(y)
self.z= float(z)
现在缺少的代码?不应该分裂做这份工作?我也试过s.split("(",",",")")
,但没有成功。
可以使用ast.literal_eval
这样输入:
>>> import ast
>>> s = "(1,100,200)"
>>> x, y, z = ast.literal_eval(s)
>>> type(x)
<class 'int'>
使用字符串函数,你需要剥去()
,然后再拆分对,
:
>>> x, y, z = s.strip('()').split(',')
>>> x, y, z
('1', '100', '200')
帮助上str.split
:
S.split([sep [,maxsplit]]) -> list of strings
返回字符串S中的单词列表,使用sep作为 分隔符字符串。如果给出maxsplit,最多maxsplit 拆分完成。如果
sep
没有指定或者没有,则任何 空格字符串是一个分隔符,空字符串从结果中被移除 。
如果您输入这样的:
Enter vector (x,y,z):
> 2,3,4
你会想要做
x, y, z = s.split(",")
如果你输入的逗号和空格分隔的数字,这样做:
x, y, z = s.split(", ")
str.split
将字符串拆分为subs敲击,在提供的参数的每次出现时分割(默认为“”)。
另一种方法:捕捉你想要的而不是分开你不需要的东西。
import re
s = '(44.2, 19, 12.73)'
floats_rgx = re.compile(r'-?\d+(?:\.\d+)?')
x, y, z = map(float, floats_rgx.findall(s))
这种做法有允许更多的开放式输入格式的优势(或劣势,这取决于你的目标)。如果你想要更严格的东西,你可以写一个完整的正则表达式来验证精确的输入格式。
可能还想在模式开头添加' - ?'来处理负数。 – iCodez