Python(普通或使用numpy)从字符串中删除所有小写子字符串的有效方法是什么s
?
s = "FOObarFOOObBAR"
remove_lower(s) => "FOOFOOBAR"
Run Code Online (Sandbox Code Playgroud)
mgi*_*son 21
我用了str.translate
.如果您传递None
转换表,则仅执行删除步骤.在这种情况下,我传递ascii_lowercase
要删除的字母.
>>> import string
>>> s.translate(None,string.ascii_lowercase)
'FOOFOOOBAR'
Run Code Online (Sandbox Code Playgroud)
我怀疑你会找到一种更快的方式,但timeit
如果有人有动机,总会比较不同的选择:).
Fac*_*sco 10
我的第一种方法是 ''.join(x for x in s if not x.islower())
如果你需要速度使用mgilson答案,它会快得多.
>>> timeit.timeit("''.join(x for x in 'FOOBarBaz' if not x.islower())")
3.318969964981079
>>> timeit.timeit("'FOOBarBaz'.translate(None, string.ascii_lowercase)", "import string")
0.5369198322296143
>>> timeit.timeit("re.sub('[a-z]', '', 'FOOBarBaz')", "import re")
3.631659984588623
>>> timeit.timeit("r.sub('', 'FOOBarBaz')", "import re; r = re.compile('[a-z]')")
1.9642360210418701
>>> timeit.timeit("''.join(x for x in 'FOOBarBaz' if x not in lowercase)", "lowercase = set('abcdefghijklmnopqrstuvwxyz')")
2.9605889320373535
Run Code Online (Sandbox Code Playgroud)