[英]Python, counting from an inputted string. Needs to be returned in a specific order?
[英]Python3 - Extracting data from a user inputted string. Could be in the wrong format
我一直在尝试寻找一种采用以下形式的用户输入的方法:[x 1 ,y 1 ] [x 2 ,y 2 ]这样x 1 ,x 2 ,y 1 ,y 2是整数价值观。
关键是使棋子从位置a移到位置b
我的目的是让用户这样输入:
move = input("\nSyntax: '[x,y][x,y]'")
我的目的是分解字符串,以便最终得到两个列表。
从= [x 1 ,y 1 ]
至= [x 2 ,y 2 ]
我发现的最接近的东西是: 从python的字符串消息中提取括号“ []”中指定的数据 。
但是,对于我来说,对于这样一个简单的字符串,我相信有一种更简单的方法-最有效。 另外,在这种情况下,用户可能会打错字等。如何确定其格式为[x 1 ,y 1 ] [x 2 ,y 2 ]?
假设您的输入字符串如下所示:
my_str = '[x1,y1][x2,y2]'
用于存储在单独的变量的值,可能会strip
的[
和]
从角和替换][
用,
。 然后在分割字符串,
如:
x1, y1, x2, y2 = my_str.strip('[]').replace('][', ',').split(',')
由x1
, y1
, x2
, y2
保持的值将是:
>>> x1, y1, x2, y2
('x1', 'y1', 'x2', 'y2')
然后,为了存储要列出的值,您可以执行以下操作:
from_list = [x1, y2]
to_list = [x2, y2]
如果可以将输入字符串的格式从[x1,y1][x2,y2]
更改为[x1,y1],[x2,y2]
(在][
之间][
逗号][
),则可以使用ast.literal_eval
作为:
>>> from ast import literal_eval
>>> my_str = '[1,2],[3,4]'
>>> from_list, to_list = literal_eval(my_str)
ove = "\nSyntax: '[12,22][32,4215]'"
a1 = ove.find('[') + 1
a2 = ove.find(']')
a3 = ove.rfind('[') + 1
a4 = ove.rfind(']')
print(a3)
print(a4)
From = [int(s) for s in ove[a1:a2].split(',')]
To = [int(s) for s in ove[a3:a4].split(',')]
print(From, To)
经过测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.