Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将所有字母转换为大写,反斜杠后面的字母除外_Python_Regex_String - Fatal编程技术网

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

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

我有以下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)

你根本不需要正则表达式。您只需使用
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(你太棒了,你帮助每个人纠正了他们的答案,不像其他几个人)