如何以一定的时间间隔在文本文件(python)中recursion地添加空格?

我正在学python 3,而且我还喜欢把自己当作初学者。

这个问题,尽我所能,是我想要添加空格到.txt文件。 这听起来很容易,但它却困扰了我。

所以我有这个巨大的双星的文本文件,它们的坐标叫华盛顿双星目录。 下载产生具有30084行文本的文本文件。 我知道我会一直需要在每行中放置一个10个字符的空格,然后有条件地删除下一个2-4行之后的空格。

例如

05597+2228STT 125 1843 2007 33 2 0 1.3 1.4 7.89 8.89 A0 -017-003 -017-003 +22 1130 055942.46+222815.0 

插入的空间将在“8”和“S”之间。 在这种情况下,我还需要删除“T”和“125”之间的空格。

一旦我知道如何recursion地编辑每一行,我可以处理空格条件格式。 我知道这将与function和循环有关。 我也得到尽可能python读取文件。

我试图做到这一点的主要原因是导出到Excel,因为缺乏WDS标识符和发现者代码之间的空白混淆了input。

任何意见将不胜感激。

谢谢。

虽然可以插入你指定的空格,但我认为这是一个糟糕的策略。 例如,空字段由空格表示,所以当不为空时,它们将读取正确,但是当它们为空时,它们将与邻接字段合并。 还有其他的领域,可以包含超出你提到的内部空间。

我认为一个更好的方法是:根据WDS圣经格式代码将行分解成单独的string; 从开始和这些string剥离白色空间; 用下划线(_)replace内部空格; 把数据放回制表符分隔。

下面是我的这个实现。 我的“Xn”代码表示WDS格式的空白空间:

 import re import sys FORMAT_CODES = [ \ 'A10', 'A7', 'A5', 'X1', 'I4', 'X1', 'I4', 'X1', 'I4', \ 'X1', 'I3', 'X1', 'I3', 'X1', 'F5.1', 'X1', 'F5.1', \ 'X1', 'F5.2', 'X1', 'F5.2', 'X1', 'A9', 'X1', 'I4', \ 'I4', 'X1', 'I4', 'I4', 'X1', 'A8', 'X1', 'A4', 'X1', 'A18', \ ] def format_length(fmt): match_object = re.match(r'[AZ](\d+)', fmt) assert match_object is not None return int(match_object.group(1)) format_lengths = [format_length(code) for code in FORMAT_CODES] # optimization with open(sys.argv[1]) as catalog: for line in catalog: start = 0 data = [] for index, code in enumerate(FORMAT_CODES): stop = start + format_lengths[index] if not code.startswith('X'): string = line[start:stop] data.append(string.strip().replace(' ', '_')) start = stop print(*data, sep='\t') 

在我的系统上,这段代码能够在手动清除非数据标题行后的大约2秒内处理30K行00-06小时段。