![](/img/trans.png)
[英]Compare two text files, replace lines in first file that contain a string from lines in second file
[英]Using the string .replace() function to update lines in a text file
我正在尝试读取一个文本文件,然后如果子字符串与预期值不匹配,我想用策划值替换该子字符串。 我当前的代码与示例 .txt 文件一起在上面。
def update_atom_count(self, input_file):
count = 0
readFile = open(input_file, 'rt')
writeFile = open(input_file, 'wt')
for line in readFile:
if line[0:6] == 'ATOM ' or line[0:6] == 'TER ':
count += 1
num = line[6:11]
if int(num) != count:
writeFile.write(line.replace(num, str(count)))
writeFile.close()
示例 .txt 文件:
ATOM 1850 OG1 THR A 225 -17.240 12.451 -7.500 1.00 62.47 O
ATOM 1851 CG2 THR A 225 -16.343 13.019 -9.660 1.00 56.69 C
ATOM 1852 N GLN A 226 -13.575 14.217 -9.123 1.00 57.64 N
ATOM 1853 CA GLN A 226 -12.637 14.556 -10.203 1.00 68.89 C
ATOM 1854 C GLN A 226 -11.192 14.229 -9.816 1.00 55.30 C
ATOM 1855 O GLN A 226 -10.255 14.468 -10.580 1.00 40.73 O
ATOM 1856 CB GLN A 226 -12.774 16.025 -10.644 1.00 82.60 C
ATOM 1857 CG GLN A 226 -12.264 16.309 -12.072 1.00 72.63 C
ATOM 1858 CD GLN A 226 -12.294 17.790 -12.444 0.39 66.96 C
ATOM 1859 OE1 GLN A 226 -12.864 18.615 -11.726 1.00 74.47 O
ATOM 1860 NE2 GLN A 226 -11.673 18.130 -13.572 1.00 46.12 N
ATOM 1861 N ASP A 227 -11.025 13.673 -8.624 1.00 32.42 N
ATOM 1862 CA ASP A 227 -9.731 13.184 -8.201 1.00 38.31 C
ATOM 1863 C ASP A 227 -9.679 11.646 -8.233 1.00 45.89 C
我的目标是将文本的第二个“列”中的' 1850'
替换为' 1'
(额外的间距用于格式化)。 我期待的输出是:
ATOM 1 CG2 THR A 225 -16.343 13.019 -9.660 1.00 56.69 C
ATOM 2 N GLN A 226 -13.575 14.217 -9.123 1.00 57.64 N
...
这是您的潜在解决方案:
#!/usr/bin/env python3
import os
def update_atom_count(self, input_file):
count = 0
readFile = open(input_file, 'rt')
writeFile = open(input_file + '.temp' , 'wt')
for line in readFile:
columns=line.split()
if columns[0] in set( ['ATOM', 'TER'] ):
count += 1
print( columns[0], count, " ".join(columns[2:]) , file=writeFile )
else:
print( line.rstrip(), file=writeFile )
writeFile.close()
readFile.close()
os.rename( input_file + '.temp', input_file )
我们的方法有几个不同之处:
column -t
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.