我有一个文件,其中一些二进制数据可用,例如:

0100010000101111101101001011010000101110111101111110111110111111111000000000001

我想把11转换成01

例如,如果它是01,那么它将是01,如果它是011,那么它将是001,如果它是0111将是0001,那么它将是00001

因此,转换后我的以上数据将是:

0100010000100000100101001001010000100010000100000010000010000000001000000000001

我多次使用查找和替换方法.

fin = open("1.txt", "rt")
data = fin.read()

data = data.replace('011', '001')


fin.close()
fin = open("2.txt", "wt")
fin.write(data)
fin.close()

os.remove('1.txt')



fin = open("2.txt", "rt")
data = fin.read()

data = data.replace('011', '001')


fin.close()
fin = open("1.txt", "wt")
fin.write(data)
fin.close()

os.remove('2.txt')

可以指导我如何使用regex或if else语句在一个代码中完成它吗?我刚开始学习Python.

推荐答案

你可以简单地用0替换一个1,后面跟着另一个1:

import re

data = "0100010000101111101101001011010000101110111101111110111110111111111000000000001"
data = re.sub(r'1(?=1)', '0', data)
print(data)

输出:

'0100010000100000100101001001010000100010000100000010000010000000001000000000001'

Python相关问答推荐

如何从FDaGrid实例中删除某些函数?

点到面的Y距离

有症状地 destruct 了Python中的regex?

如何记录脚本输出

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

数据抓取失败:寻求帮助

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

在极性中创建条件累积和

在Django admin中自动完成相关字段筛选

如何并行化/加速并行numba代码?

如何在FastAPI中为我上传的json文件提供索引ID?

如何在Python中使用另一个数据框更改列值(列表)

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

在Admin中显示从ManyToMany通过模型的筛选结果

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

当输入是字典时,`pandas. concat`如何工作?

SpaCy:Regex模式在基于规则的匹配器中不起作用

Polars表达式无法访问中间列创建表达式

在聚合中使用python-polars时如何计算模式

来自任务调度程序的作为系统的Python文件