如何在文件中特定行的字符串和数字之间添加空格



我有一个由以下列组成的文本文件:

1- 23MOL C10001 2.840 1.154 3.818
2- 23MOL H10002 2.821 1.256 3.850
3- 23MOL H10003 2.907 1.106 3.889
4- 23MOL H10004 2.884 1.156 3.719
5- 23MOL O10005 2.824 0.912 3.732
6- 23MOL C10006 2.600 0.726 3.702
7- 23MOL H10007 2.684 0.677 3.751

我想读取文件,并在字符串(H,O,C,N和…(和第2列第4到6行的数字之间添加空格。我想得到如下结果:

1- 23MOL C10001 2.840 1.154 3.818
2- 23MOL H10002 2.821 1.256 3.850
3- 23MOL H10003 2.907 1.106 3.889
4- 23MOL H 10004 2.884 1.156 3.719
5- 23MOL O 10005 2.824 0.912 3.732
6- 23MOL C 10006 2.600 0.726 3.702
7- 23MOL H 10007 2.684 0.677 3.751

我写了这个代码:

import re
s = open ("text.txt").read()[4:-1] # from line 5 to one before the last line
REG = r'(S+sS+s[A-Z])(.*)'
new_data = re.sub(REG, r'1 2', s) 
print(new_data)

它读取文件,但没有区分字母和数字。什么不起作用?

尝试:

import re 
with open("text.txt", 'r') as f:
lines = f.readlines()
for i in range(3, len(lines)):
lines[i] = re.sub(r'(S+sS+s[A-Z])(.*)', r'1 2', lines[i])
print(''.join(lines))

输出:

1- 23MOL C10001 2.840 1.154 3.818
2- 23MOL H10002 2.821 1.256 3.850
3- 23MOL H10003 2.907 1.106 3.889
4- 23MOL H 10004 2.884 1.156 3.719
5- 23MOL O 10005 2.824 0.912 3.732
6- 23MOL C 10006 2.600 0.726 3.702
7- 23MOL H 10007 2.684 0.677 3.751

最新更新