首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python二进制文件文本文件-如何使用范围的数字和字边界?

Python二进制文件文本文件-如何使用范围的数字和字边界?
EN

Stack Overflow用户
提问于 2017-10-04 15:51:46
回答 1查看 704关注 0票数 1

我有一个文本文件,要求我用二进制文件读取它,然后用二进制文件写出它。没问题。我需要用X掩盖社会保险号码,通常很容易:

text = re.sub("\\b\d{3}-\d{2}-\{4}\\b","XXX-XX-XXXX", text)

这是我正在分析的文本的一个示例:

more stuff here CHILDREN�S 001-02-0003 get rid of that stuff goes here not001-02-0003 but ssn:001-02-0003

我需要把它变成这样:

more stuff here CHILDREN�S XXX-XX-XXXX get rid of that stuff goes here not001-02-0003 but ssn:XXX-XX-XXXX

太棒了!所以现在我试着用二进制语言写同样的正则表达式。这是我得到的,这是“工作”,但天哪,感觉一点也不对:

line = re.sub(b"\\B(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)\x00-(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)\x00-(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)(\x000|\x001|\x002|\x003|\x004|\x005|\x006|\x007|\x008|\x009)\\B", b"\x00X\x00X\x00X\x00-\x00X\x00X\x00-\x00X\x00X\x00X\x00X", line)

备注:

  • 孩子们的垃圾,要保持这样
  • 需要输入边界,因此第4行没有被屏蔽

我的准则不应该是一个范围的数字吗?我只是不知道怎么用二进制语言来做。我的字界只能倒转为\b而不是b,呃.怎么回事?

更新:我也尝试过这样做:

line = re.sub(b"[\x30-\x39]", b"\x58", line)

每个数字都是这样,但如果我试着做一些简单的事情,比如:

line = re.sub(b"[\x30-\x39][\x30-\x39]", b"\x58\x58", line)

它和任何东西都不匹配,知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 16:33:27

你可以试试:

代码语言:javascript
运行
复制
import re

rx = re.compile(r'\b\d{3}-\d{2}-\d{4}\b')

with open("test.txt", "rb") as fr, open("test2.txt", "wb+") as fp:
    repl = rx.sub('XXX-XX-XXXX', fr.read())
    fp.write(repl)

这将保持每一个垃圾字符的原样,并将其写入test2.txt

注意,当您不希望每一个反斜杠都转义时,可以在r'string here'中使用Python

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46569152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档