- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在处理有时带有噪声尖峰的 RF 信号。
输入是这样的:00000001111100011110001111100001110000001000001111000000111001111000
在解析信号中的数据之前,我需要删除尖峰位,即长度小于(在此示例中)3 的 0 和 1 序列。
所以基本上我需要匹配 0000000111110001111000111110000111000000(1)000001111000000111(00)1111000
匹配后,我用它之前的位替换它,所以一个干净的信号看起来像这样:00000001111100011110001111100001110000000000001111000000111111111000
到目前为止,我使用两种不同的正则表达式实现了这一点:
self.re_one_spikes = re.compile("(?:[^1])(?P<spike>1{1,%d})(?=[^1])" % (self._SHORTEST_BIT_LEN - 1))
self.re_zero_spikes = re.compile("(?:[^0])(?P<spike>0{1,%d})(?=[^0])" % (self._SHORTEST_BIT_LEN - 1))
然后我迭代匹配并替换。
如何使用单个正则表达式执行此操作?我可以使用正则表达式替换不同大小的匹配项吗?
我试过这样的事情但没有成功:
re.compile("(?![\1])([01]{1,2})(?![\1])")
最佳答案
import re
THRESHOLD=3
def fixer(match):
ones = match.group(0)
if len(ones) < THRESHOLD: return "0"*len(ones)
return ones
my_string = '00000001111100011110001111100001110000001000001111000000111001111000'
print(re.sub("(1+)",fixer,my_string))
如果你还想删除零的“尖峰”
def fixer(match):
items = match.group(0)
if len(items) < THRESHOLD: return "10"[int(items[0])]*len(items)
return items
print(re.sub("(1+)|(0+)",fixer,my_string))
关于python - 用于消除位信号噪声尖峰的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39519207/
我正在使用 Jmeter 测试我的站点,以查看一百个线程将如何影响站点性能,并使用 apache 和 mod_php 以及带有 fastcgi 的 nginx 对其进行了测试。我注意到 bottleb
脉冲神经网络和循环神经网络都可以对时变信息进行建模。但我不确定哪种模型相对于计算成本更好。使用更复杂的脉冲神经网络是否值得,或者循环神经网络是否可以在所需计算量少得多的情况下工作?脉冲网络收敛得更快吗
测试驱动开发人员指的是一种快速、探索性的调查,其中涉及编写代码以查看其是否有效,即峰值。 知道他们为什么想出这个词吗? 更新:肯特·贝克 (Kent Beck) 的造词对我来说看起来像是“原始”的,尽
我在开发的滚动游戏中遇到了 TiledMapRenderer 问题。我目前正在使用带有 Tmx Map 的 BatchTiledMapRenderer(我也尝试过使用普通的 TiledMapRende
正如标题所说,我运行“bundle 更新”,我的 CPU 达到峰值,但没有任何反应。我已经离开它两个小时了。有什么想法吗? 我使用 bundler 版本 1.0.15。 这是我的 Gemfile 内容
希望有人可以阐明我们遇到的这个问题,因为我在这里不知所措。 首先,一点背景: 我在几周前为我们的应用程序重写了 URL 重写并实现了它。我使用 global.asax 文件中的 Application
我是一名优秀的程序员,十分优秀!