将除反斜杠后面的字母以外的所有字母转换为大写

2024-10-05 17:20:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下8位十六进制字符串\x00\x13\xa2\x00@\n!\x1c 所需的输出是'\x00\x13\xA2\x00@\n!\x1C'

为此,我需要将所有字母都改为大写,除了a \后面的字母

我试着把整个字符串做成大写字母,把N和X小写,但这还远远不够理想

import re
mysourceaddrlong = ( repr(data['source_addr_long'])[1:-1] ) 

输出\x00\x13\xa2\x00@\n!\x1c

 mysourceaddrlongUPPERCASE = mysourceaddrlong.upper()
    mysourceaddrlongFIXED = re.sub('[XN]+', lambda m: m.group(0).lower(), mysourceaddrlongUPPERCASE)

Tags: 字符串re字母大写字母小写理想x00大写
1条回答
网友
1楼 · 发布于 2024-10-05 17:20:50

你根本不需要正则表达式。您可以只使用str函数

>>> mysourceaddrlong = r"\x00\x13\xa2\x00@\n!\x1c"
>>> "\\".join([(i[0]+i[1:].upper()) for i in mysourceaddrlong.split('\\') if i])
'x00\\x13\\xA2\\x00@\\n!\\x1C'

将生成器表达式与join结合起来,它将为您解决问题

编辑

如果你想在前面加一个\

例如:

str = 'x00\\x13\\xA2\\x00@\\n!\\x1C' # what you get
str = "\\"+str

相关问题 更多 >