在python中,定义变量的最快方法是拆分字符串,还可以转换为小写字母并去除空格?
类似
args.where = 'Sn = Smith'
a,v = args.where.lower().split('=').strip()
答案 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