Python 如何在不存在分隔符时处理拆分?

新手上路,请多包涵

我有以下 python 代码:

 def split_arg(argv):
    buildDescriptor = argv[1]
    buildfile, target = buildDescriptor.split("#")

    return buildfile, target

它需要一个形式为 buildfile#target 的字符串 ( argv[1] ),并将它们拆分为两个同名变量。因此,像“ my-buildfile#some-target ”这样的字符串将分别分解为 my-buildfilesome-target

但有时,不会有“#”和目标;有时你只有“ my-buildfile ”,在这种情况下我只希望 目标 为“”(空)。

我如何修改此函数以便它处理“#”不存在的实例并返回带有空目标的构建文件?

目前,如果我只传递构建文件,它会抛出一个错误:

 buildfile, target = buildDescriptor.split("#")
ValueError: need more than 1 value to unpack

提前致谢!

原文由 IAmYourFaja 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 523
2 个回答

首先,将拆分结果放入列表中:

 split_build_descriptor = buildDescriptor.split("#")

然后检查它有多少个元素:

 if len(split_build_descriptor) == 1:
    buildfile = split_build_descriptor[0]
    target = ''
elif len(split_build_descriptor) == 2:
    buildfile, target = split_build_descriptor
else:
    pass  # handle error; there's two #s

原文由 icktoofay 发布,翻译遵循 CC BY-SA 3.0 许可协议

我会使用明显的方法:

     buildfile, target = buildDescriptor.split("#") if \
                        "#" in buildDescriptor else \
                        (buildDescriptor, "")

请注意,当 buildDescriptor 中有多个“#”时,这也会抛出异常(这通常是一件好事!)

原文由 ch3ka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏