在Python中从有序对字符串中提取整数?

在Python中从有序对字符串中提取整数?,python,tuples,sequence,split,iterable-unpacking,Python,Tuples,Sequence,Split,Iterable Unpacking,这对你们很多人来说可能非常简单,但我似乎找不到太多。我有一个想法,但我觉得我做的比我应该做的更多。我试图从文件中读取格式为(x1,x2)(y1,y2)的数据。我的目标是使用值x1、x2、y1和y2编码距离计算 问题:如何从这个字符串中提取整数?它被调用,可以这样做 >>> a =(1,2) >>> x1,x2=a >>> x1 1 >>> x2 2 >>> b = [[1,2],[2,3]] >>

这对你们很多人来说可能非常简单,但我似乎找不到太多。我有一个想法,但我觉得我做的比我应该做的更多。我试图从文件中读取格式为(x1,x2)(y1,y2)的数据。我的目标是使用值x1、x2、y1和y2编码距离计算

问题:如何从这个字符串中提取整数?

它被调用,可以这样做

>>> a =(1,2)
>>> x1,x2=a
>>> x1
1
>>> x2
2
>>> b = [[1,2],[2,3]]
>>> (x1,x2),(y1,y2)=b
>>> x1
1
>>> x2
2
>>> y1
2
>>> y2
3
>>>
它被称为,可以这样做

>>> a =(1,2)
>>> x1,x2=a
>>> x1
1
>>> x2
2
>>> b = [[1,2],[2,3]]
>>> (x1,x2),(y1,y2)=b
>>> x1
1
>>> x2
2
>>> y1
2
>>> y2
3
>>>

如果您试图从一些列表中获取值并将其放入变量中,这是一种方法

>>> x1, y1, x2, y2 = [1, 2] + [3, 4]
>>> x1
1
>>> x2
3
>>> y1
2
>>> y2
4
>>> 
元组将显示相同的行为

x1, y1, x2, y2 = (1, 2) + (3, 4)
下面是如何从文件中读取输入,并使用gnibbler的正则表达式对其进行解析

import re

with open("myfile.txt", 'r') as file_handle:

    for line in file_handle:
        x1, y1, x2, y2 = map(int, re.match(r"\((.*), (.*)\) \((.*), (.*)\)", line).groups())
        print x1, y1, x2, y2

如果您试图从一些列表中获取值并将其放入变量中,这是一种方法

>>> x1, y1, x2, y2 = [1, 2] + [3, 4]
>>> x1
1
>>> x2
3
>>> y1
2
>>> y2
4
>>> 
元组将显示相同的行为

x1, y1, x2, y2 = (1, 2) + (3, 4)
下面是如何从文件中读取输入,并使用gnibbler的正则表达式对其进行解析

import re

with open("myfile.txt", 'r') as file_handle:

    for line in file_handle:
        x1, y1, x2, y2 = map(int, re.match(r"\((.*), (.*)\) \((.*), (.*)\)", line).groups())
        print x1, y1, x2, y2
用正则表达式

>>> import re
>>> s = "(5, 42) (20, -32)"
>>> x1, y1, x2, y2 = map(int, re.match(r"\((.*), (.*)\) \((.*), (.*)\)", s).groups())
>>> x1, y1
(5, 42)
>>> x2, y2
(20, -32)
或者没有正则表达式

>>> x1, y1, x2, y2 = (int(x.strip("(),")) for x in s.split())
用正则表达式

>>> import re
>>> s = "(5, 42) (20, -32)"
>>> x1, y1, x2, y2 = map(int, re.match(r"\((.*), (.*)\) \((.*), (.*)\)", s).groups())
>>> x1, y1
(5, 42)
>>> x2, y2
(20, -32)
或者没有正则表达式

>>> x1, y1, x2, y2 = (int(x.strip("(),")) for x in s.split())


我真的不明白你在问什么。大卫:我正试图编写一个距离公式,从文件中读取一个字符串,即“(5,42)(20,-32)”,我必须输出结果。我只是在琢磨如何将有序对串分解成整数列表。我真的不明白你在问什么。大卫:我正试图编写一个距离公式,从文件中读取一个字符串,即“(5,42)(20,-32)”,我必须输出结果。我只是在讨论如何将有序对字符串分解为整数列表。RT:谢谢,但我忘了提到我正在从文件中读取,所以有序对首先作为字符串读取。“我试图把字符串分解成整数,我可以分配给变量。@斯蒂芬·保罗,gnibbler的答案应该做你想做的事谢谢你的输入!RT:谢谢,但我忘了提到我正在从文件中读取,所以顺序对首先作为字符串读取。“我试图把字符串分解成整数,我可以分配给变量。@斯蒂芬·保罗,gnibbler的答案应该做你想做的事谢谢你的输入!令人惊叹的。我现在拿到了。谢谢你,伙计!很酷,如果你决定继续使用,那么别忘了问一些非常好的问题。我会努力的!再次感谢,太棒了。我现在拿到了。谢谢你,伙计!很酷,如果你决定继续使用,那么别忘了问一些非常好的问题。我会努力的!再次感谢。啊。。。更像是这样。谢谢@gnibbler-这在PHP中可能(“(),”)吗?@MichaelMikhjian,Python的
str.strip
有点不寻常。我认为在PHP中没有这么简单的方法。如果你找不到关于它的问题,你可以试着创建一个。@gnibbler我刚刚意识到,这在PHP中是可能的。如果我们去掉(),然后按或“”分解,并将其放入list()=中,那么我们就得到了一个匹配的结果。啊。。。更像是这样。谢谢@gnibbler-这在PHP中可能(“(),”)吗?@MichaelMikhjian,Python的
str.strip
有点不寻常。我认为在PHP中没有这么简单的方法。如果你找不到关于它的问题,你可以试着创建一个。@gnibbler我刚刚意识到,这在PHP中是可能的。如果我们去掉(),然后按或“”进行分解,并将其放入list()=中,则会得到匹配的结果。