Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 正则表达式将4.7uF替换为4U7_Python_Regex - Fatal编程技术网

Python 正则表达式将4.7uF替换为4U7

Python 正则表达式将4.7uF替换为4U7,python,regex,Python,Regex,我正在努力学习正则表达式。是否可以使用正则表达式将电子元件值从标准格式解析为速记格式: 4.7pF > 4P7 16.2kΩ > 16K2 22.6nH > 22N6 理想情况下,正则表达式将在十进制数之后找到字母,并将其插入小数点的位置。如果我们能切掉单元的尾随字母/符号也会很好 到目前为止,我正在匹配十进制数字,但不知道如何抓取匹配组后的字母,然后不知道如何进行替换 干杯使用以下内容进行搜索: ([0-9]*)\。([0-9]*)(。。.*()

我正在努力学习正则表达式。是否可以使用正则表达式将电子元件值从标准格式解析为速记格式:

 4.7pF    >  4P7
 16.2kΩ   >  16K2
 22.6nH   >  22N6
理想情况下,正则表达式将在十进制数之后找到字母,并将其插入小数点的位置。如果我们能切掉单元的尾随字母/符号也会很好

到目前为止,我正在匹配十进制数字,但不知道如何抓取匹配组后的字母,然后不知道如何进行替换


干杯

使用以下内容进行搜索:

([0-9]*)\。([0-9]*)(。。.*
()


然后将其替换为
\1\3\2
。这不会改变代表单位的字母大小写。不确定如何进行搜索。

使用以下方法进行搜索:

([0-9]*)\。([0-9]*)(。。.*
()


然后将其替换为
\1\3\2
。这不会改变代表单位的字母大小写。不确定如何做到这一点。

这里是一个完整的Python解决方案:

import re
p = re.compile(r'\D*(\d+)\.(\d+)(\S).*')
strs = ["4.7pF", "16.2kΩ", "22.6nH"]
result = [p.sub(lambda m: "{0}{1}{2}".format(m.group(1),m.group(3).upper(),m.group(2)), x) for x in strs]
print(result) # => ['4P7', '16K2', '22N6']
电话在这里

正则表达式匹配前导非数字(0或更多),然后捕获1+个数字,匹配一个点,捕获1个或更多数字,然后捕获1个非空白字符


在代码中,在
re.sub
方法中使用lambda表达式来构造所需的替换字符串。

以下是Python完整的解决方案:

import re
p = re.compile(r'\D*(\d+)\.(\d+)(\S).*')
strs = ["4.7pF", "16.2kΩ", "22.6nH"]
result = [p.sub(lambda m: "{0}{1}{2}".format(m.group(1),m.group(3).upper(),m.group(2)), x) for x in strs]
print(result) # => ['4P7', '16K2', '22N6']
电话在这里

正则表达式匹配前导非数字(0或更多),然后捕获1+个数字,匹配一个点,捕获1个或更多数字,然后捕获1个非空白字符

在代码中,在
re.sub
方法中使用lambda表达式来构造所需的替换字符串。

在Python中,可以使用

result = re.sub(r'(\d+)(?:\.(\d+))(\w).*', r"\1\3\2", test_str).upper()

在Python中,您可以使用

result = re.sub(r'(\d+)(?:\.(\d+))(\w).*', r"\1\3\2", test_str).upper()

正则表达式(“一般”)不支持大小写更改。使用Python实现这一点,因为电子组件值已经在分隔的字符串或更大的字符串中(以及其他内容)?正则表达式(“一般”)不支持大小写更改。使用Python实现这一点,因为电子元件值已经在单独的字符串中或在更大的字符串中(与其他东西一起)?不需要这么多复杂的东西(至少在这里)让我知道这里对您来说什么是复杂的,我不会用那种方式解释的。我只是说它也可以简单地完成。虽然这些都是相对的术语。好吧,也许对于当前的场景来说可能有点太多了。但是,这是一种通用方法(如果只有一个捕获应该更改,其他捕获不应该更改)。这就是为什么我在我的评论中提到了
(至少在这里)
。我理解您的是通用解决方案。不需要(至少在这里)这么多复杂的内容,让我知道这里对您来说有什么复杂之处,我不会用那种方式解释的。我只是说它也可以简单地完成。虽然这些都是相对的术语。好吧,也许对于当前的场景来说可能有点太多了。但是,这是一种通用方法(如果只有一个捕获应该更改,其他捕获不应该更改)。这就是为什么我在我的评论中提到了
(至少在这里)
。我理解您的是通用解决方案非常快速的响应和非常简洁的,谢谢。似乎适用于小数点前后任意位数。响应速度非常快,非常简洁,谢谢。似乎适用于小数点前后任意数量的数字。