Python 使用“re.findall”拆分字符串时出错
我需要把一个字符串分成三个值x,y,z,字符串是这样的48,25,19 我使用了re.findall,它工作正常,但有时会产生这种错误 平面X,平面Y,平面Z=re.findall\d+。\d+,平面位置 ValueError:没有足够的值来解压缩预期的3,得到0 代码如下:Python 使用“re.findall”拆分字符串时出错,python,Python,我需要把一个字符串分成三个值x,y,z,字符串是这样的48,25,19 我使用了re.findall,它工作正常,但有时会产生这种错误 平面X,平面Y,平面Z=re.findall\d+。\d+,平面位置 ValueError:没有足够的值来解压缩预期的3,得到0 代码如下: def read_data(): # reading from file file = open("D:/Cs/Grad/Tests/airplane test/Reading/
def read_data():
# reading from file
file = open("D:/Cs/Grad/Tests/airplane test/Reading/Positions/PlanePos.txt", "r")
planepos = file.readline()
file.close()
file = open("D:/Cs/Grad/Tests/airplane test/Reading/Positions/AirportPosition.txt", "r")
airportpos = file.readline()
file.close()
# ==================================================================
# spliting and getting numbers
plane_X, plane_Y, plane_Z = re.findall("\d+\.\d+", planepos)
airport_X, airport_Y, airport_Z = re.findall("\d+\.\d+", airportpos)
return plane_X,plane_Y,plane_Z,airport_X,airport_Y,airport_Z
我需要的是将字符串48,25,19拆分为x=48,y=25,z=19
因此,如果有人知道更好的方法或如何解决此错误,我们将不胜感激。您可以使用ast.literal\u eval安全地评估字符串:
import ast
s = '(48,25,19)'
x, y, z = ast.literal_eval(s)
# x => 48
# y => 25
# z => 19
您可以使用ast.literal\u eval安全地评估字符串:
import ast
s = '(48,25,19)'
x, y, z = ast.literal_eval(s)
# x => 48
# y => 25
# z => 19
您的正则表达式只适用于带小数点的数字,而不适用于整数,因此会出现错误。您可以将字符串中的括号和空格去掉,然后用逗号分割字符串,并将结果字符串序列映射到浮点构造函数:
x, y, z = map(float, planepos.strip('() \n').split(','))
您的正则表达式只适用于带小数点的数字,而不适用于整数,因此会出现错误。您可以将字符串中的括号和空格去掉,然后用逗号分割字符串,并将结果字符串序列映射到浮点构造函数:
x, y, z = map(float, planepos.strip('() \n').split(','))
如果数字是整数,则可以使用正则表达式:
re.findall(r"\d+","(48,25,19)")
['48', '25', '19']
如果存在混合数字:
re.findall(r"\d+(?:\.\d+)?","(48.2,25,19.1)")
['48.2', '25', '19.1']
如果数字是整数,则可以使用正则表达式:
re.findall(r"\d+","(48,25,19)")
['48', '25', '19']
如果存在混合数字:
re.findall(r"\d+(?:\.\d+)?","(48.2,25,19.1)")
['48.2', '25', '19.1']
这比我写的更有意义,但仍然会产生一些错误,但我可以活着修复它,谢谢。这比我写的更有意义,但仍然会产生一些错误,但我可以活着修复它,谢谢。谢谢你的帮助这将是有帮助的,但上一个将帮助我更多,因为我以后需要转换谢谢。谢谢你的帮助这将是有帮助的,但上一个将帮助我更多,因为我以后需要转换谢谢。谢谢你的评论帮助我了解它是如何工作的。谢谢你的评论帮助我让我了解它是如何工作的。