Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Python中检查字符串是否具有特定格式_String_Python 3.x_Format - Fatal编程技术网

String 如何在Python中检查字符串是否具有特定格式

String 如何在Python中检查字符串是否具有特定格式,string,python-3.x,format,String,Python 3.x,Format,所以我的代码应该处理线条,看看线条是否是坐标 "x y z" 示例坐标: 1.500 -6.002 0.007 用数字表示符号,如果是的话,我会处理这一行,如果不是,我会保持不变。我认为re将是正确的工具,但我太新了,不知道如何根据过去已经发生的不同场景进行操作 正则表达式不是判断数字是否为浮点数的最佳选择。这很复杂,因为一个有效的浮点数可以采用并且在Python的未来版本中可能采用所有可能的形式 因此,最好尝试转换它,看看Python是否能做到,如果不能,则捕获异常 我想这样做如下: de

所以我的代码应该处理线条,看看线条是否是坐标

"x y z"
示例坐标:

1.500 -6.002 0.007

用数字表示符号,如果是的话,我会处理这一行,如果不是,我会保持不变。我认为re将是正确的工具,但我太新了,不知道如何根据过去已经发生的不同场景进行操作

正则表达式不是判断数字是否为浮点数的最佳选择。这很复杂,因为一个有效的浮点数可以采用并且在Python的未来版本中可能采用所有可能的形式

因此,最好尝试转换它,看看Python是否能做到,如果不能,则捕获异常

我想这样做如下:

def check_line(line_coord):
    try:
        return len([float(x) for x in line_coord.split()])==3
    except ValueError:
        return False
  • 在根据空格拆分的行上创建具有浮点转换的列表
  • 检查列表的长度是否等于3:如果确定,则返回
    True
  • 通过
    ValueError
    异常来保护它,如果捕获到异常,则返回
    False
测试:

print(check_line("10 4.5dd 5.6"))  # bogus float in 2nd position
print(check_line("10 5.6"))  # only 2 fields
print(check_line("10 -40 5.6")) # 3 fields, all floats

False
False
True
编辑:以上仅检查值是否在此处。Dawg建议了一种返回三元组或
None
if error的方法,如下所示:

def check_line(line_coord):
    try:
        x,y,z = map(float,line_coord.split())
        return x,y,z
    except ValueError:
        return None
map
更快,因为它不会创建临时列表)。通过与之前相同的测试,我们得到:

None
None
(10.0, -40.0, 5.6)

如果坐标浮动之间的符号为“”而不是“;”,是否可以添加浮动检查?(我有点睡着了,很抱歉)你可以做
try:x,y,z=map(float,line.split());返回x,y,z;除ValueError外:返回无