Python:在一行中应用 lower() strip() 和 split()

新手上路,请多包涵

在 python 中,定义变量的最快方法是什么,既可以拆分字符串,又可以转换为小写字母和条带化空格?

就像是

args.where = 'Sn = Smith'
a,v = args.where.lower().split('=').strip()

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

阅读 836
2 个回答

您正在将一个字符串拆分为一个列表,并且您不能删除该列表。您需要处理拆分中的每个元素:

 a, v = (a.strip() for a in args.where.lower().split('='))

这使用生成器表达式来处理每个元素,因此不会为剥离的字符串创建中间列表。如果表达式没有恰好产生两个值,Python 将在此处抛出异常。

在这种情况下专注于 速度 是.. 毫无意义的,除非你在非常大的元素上这样做。不过,您 可以 使用 map() 对上述内容进行微优化:

 a, v = map(str.strip, args.where.lower().split('='))

但是可读性的代价可能不值得,不仅仅是两个元素。

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

您需要的是列表理解,这里是解决您问题的示例。

 args.where = 'Sn = Smith'
a,v = [val.strip() for val in args.where.lower().split('=')]

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

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