我一直试图找到一种方式来获取用户输入,其形式应该是: [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 ]
To = [x 2 ,y 2 ]
我发现的最近的事情是: Extract the data specified in brackets '[ ]' from a string message in python 。
但是,对于我这种简单的字符串,我确信这是一种更简单的方式 - 最有效的方法。此外,在这种情况下,用户可能会输入错字等...我如何确保它的格式为[x 1 ,y 1 ] [X <子> 2 子>,Y <子> 2 子>]?
答案 0 :(得分:1)
假设您的输入字符串如下:
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)
答案 1 :(得分:1)
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)
经过测试。