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

时间:2019-02-26 11:55:09

标签: python python-3.x

在python中,定义变量的最快方法是拆分字符串,还可以转换为小写字母并去除空格?

类似

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

4 个答案:

答案 0 :(得分:4)

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

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

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

在这种情况下,

专注于速度是没有意义的,除非您要对非常大的元素进行此操作。您可以使用map() 对上述内容进行微优化,

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

如果要在使用strip()(创建列表)后使用split(),则可以使用生成器表达式。

where = 'Sn = Smith'
a, v = (word.strip() for word in where.lower().split('='))

答案 3 :(得分:0)

如果变量中包含所有字符串,则可以使用re

import re

word="Sn = Smith"
regex = r'\b\w+\b'
word1,word2=re.findall(regex,word.lower())
print (word1)
print("--")
print(word2)

输出:

sn
--
smith