我想在一个大文件的一些随机行中替换一个特定的(但是常见的)字符串
截至目前我的代码是选择随机行
我想在随机选择的行中替换属于同一列的公共字符串
输入的示例是:
ATOM 1 OH2 TIP3 1 -29.690 2.213 9.702 0.00 0.00 W1
ATOM 2 OH2 TIP3 2 7.556 -17.910 8.218 0.00 0.00 W1
ATOM 3 OH2 TIP3 3 33.654 -25.626 26.623 0.00 0.00 W1
ATOM 4 OH2 TIP3 4 19.274 -19.602 -32.490 0.00 0.00 W1
ATOM 5 OH2 TIP3 5 32.048 6.658 16.472 0.00 0.00 W1
输出例如是:
ATOM 1 OH2 TIP3 1 -29.690 2.213 9.702 0.00 0.00 W1
ATOM 2 UT TIP3 2 7.556 -17.910 8.218 0.00 0.00 W1
ATOM 3 OH2 TIP3 3 33.654 -25.626 26.623 0.00 0.00 W1
ATOM 4 OH2 TIP3 4 19.274 -19.602 -32.490 0.00 0.00 W1
ATOM 5 UT TIP3 5 32.048 6.658 16.472 0.00 0.00 W1
我想将随机选择的行的字符串OH2更改为UT P.S。:间距在输出中很重要 这是我现在的代码。
file=sys.argv[1]
ncsolv=string.atoi(sys.argv[2]) # no. of random lines to select
finp = map(string.split, open(file,'r').readlines())
atname=map( lambda line: line[2], finp)
ndata=len(atname)
nwat=ndata/3
new_list=[]
#print ncsolv,nwat
while (len(new_list)<2):
k=int(random.uniform(0,nwat))
flag=0
# print k
for j in new_list:
if (j==k):
flag=1
exit
if (flag==0): new_list.append(k)