繁体   English   中英

Python3-从用户输入的字符串中提取数据。 格式错误

[英]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(',')

x1y1x2y2保持的值将是:

>>> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM