【问题标题】:How do I insert a comma into text files of a directory?如何在目录的文本文件中插入逗号?
【发布时间】:2020-02-28 20:06:42
【问题描述】:

我在一个目录中有一堆文本文件,需要替换其中的文本。每行如下所示:

B6  0x040A43
B17  0x6C00C8

我需要:

  1. 将第一部分替换为1,28
  2. 删除空格,即\t 空格。
  3. 删除十六进制标识符0x
  4. 在接下来的两个字符后添加逗号。

所以结果应该是这样的:

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,因此除了最后一个逗号之外,它包含所有内容。

我的问题是:

  1. 如何在字符串中插入逗号?
  2. 这是替换文件中文本的最佳方法吗
    还是我应该以不同的方式访问它?

【问题讨论】:

  • 字符串不是列表,但都是序列和可迭代对象。
  • 你的所有线条都是这样还是你需要先找到它们?
  • 因为如果你的所有行看起来像那样,你可以这样做 line = "1,28," + line[-6:-4] + "," + line[-4:] .这样,就不需要正则表达式了。

标签: python regex file overwrite


【解决方案1】:
import glob
import os
import re
directory = 'test'
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)
            line = line[:7] + ',' + line[7:]
            print(line)


输出

1,28,04,0A43
1,28,6C,00C8

【讨论】:

  • 非常感谢!我忘了你可以用字符串做到这一点
猜你喜欢
  • 2011-08-20
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多