我有一个由以下列组成的文本文件:
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