我有一个像这样的连接字符串:
my_str = 'str1;str2;str3;'
Run Code Online (Sandbox Code Playgroud)
我想将split函数应用于它然后将结果列表转换为元组,并删除由此产生的任何空字符串split(注意最后的';'到最后)
到目前为止,我这样做:
tuple(filter(None, my_str.split(';')))
Run Code Online (Sandbox Code Playgroud)
是否有更高效(在速度和空间方面)的方式来做到这一点?
Lev*_*von 12
这个怎么样?
tuple(my_str.split(';')[:-1])
('str1', 'str2', 'str3')
Run Code Online (Sandbox Code Playgroud)
您将字符串拆分为字符串;,并将所有子字符串(除了最后一个,空字符串除外)传递给元组以创建结果元组.
Dav*_*ver 10
这是一种非常合理的方法.一些替代品:
foo.strip(";").split(";") (如果字符串中没有任何空切片)[ x.strip() for x in foo.split(";") if x.strip() ] (从每个切片中去除空白)"最快"的方法取决于很多事情......但你可以轻松地尝试ipython %timeit:
In [1]: foo = "1;2;3;4;"
In [2]: %timeit foo.strip(";").split(";")
1000000 loops, best of 3: 1.03 us per loop
In [3]: %timeit filter(None, foo.split(';'))
1000000 loops, best of 3: 1.55 us per loop
| 归档时间: |
|
| 查看次数: |
39334 次 |
| 最近记录: |