如何从字符串中提取所有UPPER?蟒蛇

O.r*_*rka 14 python string extract lowercase uppercase

#input
my_string = 'abcdefgABCDEFGHIJKLMNOP'
Run Code Online (Sandbox Code Playgroud)

如何从字符串中提取所有UPPER?

#output
my_upper = 'ABCDEFGHIJKLMNOP'
Run Code Online (Sandbox Code Playgroud)

pio*_*kuc 30

使用列表理解:

>>> s = 'abcdefgABCDEFGHIJKLMNOP'
>>> ''.join([c for c in s if c.isupper()])
'ABCDEFGHIJKLMNOP'
Run Code Online (Sandbox Code Playgroud)

使用生成器表达:

>>> ''.join(c for c in s if c.isupper())
'ABCDEFGHIJKLMNOP
Run Code Online (Sandbox Code Playgroud)

您也可以使用正则表达式:

>>> re.sub('[^A-Z]', '', s)
'ABCDEFGHIJKLMNOP'
Run Code Online (Sandbox Code Playgroud)


her*_*nkc 7

import string
s = 'abcdefgABCDEFGHIJKLMNOP'
s.translate(None,string.ascii_lowercase)
Run Code Online (Sandbox Code Playgroud)

string.translate(s,table [,deletechars])函数将删除deletechars中字符串中的所有字符.然后,将使用表格翻译字符串(在这种情况下我们不使用它).

要仅删除小写字母,您需要将string.ascii_lowercase作为要删除的字母列表.

table是无因为当表None中,只有字符删除步骤将被执行.

  • 这是迄今为止所有给出的最有效的方法...假设它适用于OP用例...... (4认同)
  • 删除全部小写只与在数据只是字母时减去全部大写相同.OP的一个样本都是字母,所以这个_might_是合适的 - 但不是没有解释差异. (3认同)
  • 我想过发布这个,但最终,它在很多情况下都失败了(标点符号,非打印字符等等) (2认同)

hat*_*rby 6

更高阶的功能来救援!

filter(str.isupper, "abcdefgABCDEFGHIJKLMNOP")
Run Code Online (Sandbox Code Playgroud)

编辑:如果你不知道过滤器做什么:filter接受一个函数和一个iterable,然后将该函数应用于iterable中的每个元素.它保留所有返回true的值,并抛弃所有其余值.因此,这将返回"ABCDEFGHIJKLMNOP".

  • 这是更好的:`filter(str.isupper,"abvABC")` (3认同)