【发布时间】:2020-02-28 20:06:42
【问题描述】:
我在一个目录中有一堆文本文件,需要替换其中的文本。每行如下所示:
B6 0x040A43
B17 0x6C00C8
我需要:
- 将第一部分替换为
1,28。 - 删除空格,即
\t空格。 - 删除十六进制标识符
0x。 - 在接下来的两个字符后添加逗号。
所以结果应该是这样的:
1,28,04,0A43
1,28,6C,00C8
我仍在学习 python 和正则表达式,在玩了几个小时之后,到目前为止,我已经写了以下内容:
for filename in glob.glob(os.path.join(directory, '*.txt')):
with open(filename, "r") as f:
lines = f.read().splitlines()
for line in lines:
line = re.sub(r'B\d{1,}[\s+]0x','1,28,', line)
print(line)
这会打印出1,28,040A43,因此除了最后一个逗号之外,它包含所有内容。
我的问题是:
- 如何在字符串中插入逗号?
- 这是替换文件中文本的最佳方法吗
还是我应该以不同的方式访问它?
【问题讨论】:
-
字符串不是列表,但都是序列和可迭代对象。
-
你的所有线条都是这样还是你需要先找到它们?
-
因为如果你的所有行看起来像那样,你可以这样做 line = "1,28," + line[-6:-4] + "," + line[-4:] .这样,就不需要正则表达式了。
标签: python regex file overwrite