Python 将所有字母转换为大写,反斜杠后面的字母除外
我有以下8位十六进制字符串Python 将所有字母转换为大写,反斜杠后面的字母除外,python,regex,string,Python,Regex,String,我有以下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 mysourceaddrlongUPPERC
\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)
你根本不需要正则表达式。您只需使用
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'
将生成器表达式与联接组合起来,它将适合您
编辑
如果您希望在前面添加一个\
e、 g:
你根本不需要正则表达式。您只需使用
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'
将生成器表达式与联接组合起来,它将适合您
编辑
如果您希望在前面添加一个\
e、 g:
你试过什么吗?如果是,请添加一些代码:)这与XBee有什么关系?或者使用“hex”?
mysourceaddrlong=\x00\x13\xa2\x00@\n\x1c
不是python bro\x00\x13\xa2\x00@\n\x1c是我要与之交谈的xbee的十六进制地址,也就是接收xbee的目的地址。请尝试使用反斜杠拆分,将每个元素转换为xXXXX,并使用反斜杠分隔重新排列。您尝试过吗?如果是,请添加一些代码:)这与XBee有什么关系?或者使用“hex”?mysourceaddrlong=\x00\x13\xa2\x00@\n\x1c
不是python bro\x00\x13\xa2\x00@\n\x1c是我要与之交谈的xbee的十六进制地址,也就是接收xbee的dest_addr____________________________________________________?你在做的不是MySourceAddressLongi我认为你没有在你的网站上得到你的输出answer@PadraicCunningham再次抱歉,s
实际上是myourceaddrlong.split(“\\”)
谢谢@padraiccningham(你他妈的很好,你帮助每个人纠正他们的答案,不像其他几个人)关闭,但不能解决仍然是大写字母的N。你确定这有效吗?你在做的不是MySourceAddressLongi我认为你没有在你的网站上得到你的输出answer@PadraicCunningham再次抱歉,s
实际上是myourceaddrlong.split(“\\”)
谢谢@padraiccningham(你太棒了,你帮助每个人纠正了他们的答案,不像其他几个人)