在字符串末尾连接 - Python

时间:2016-07-25 19:34:30

标签: python string file

我有一个基本上如下的文件:

atom0
coordinateX coordinateY coordinateZ
atom1
coordinateX coordinateY coordinateZ
...

我正在尝试添加原子编号(从0开始),以便我的文件看起来像这样:

readFile = open("coordinates.txt", 'r')
writeFile = open("coordinatesFormatted.txt", 'w')
index = 1
counter = 0

for lineToRead in readFile:
    lineToRead = lineToRead.lstrip()
    if index % 2 == 0:
        counter = counter + 1
        lineToRead+=str(counter) 
    writeFile.write(lineToRead)
    index = index+1

readFile.close()
writeFile.close()

f = open('coordinatesFormatted.txt','r')
temp = f.read()
f.close()

f = open('coordinatesFormatted.txt', 'w')
f.write("0")
f.write(temp)
f.close()

这是我的代码和我的问题:

0atom
coordinateX coordinateY coordinateZ
1atom
coordinateX coordinateY coordinateZ
...

在运行我的代码后,我没有获得所需的输出,而是得到了这个:

{{1}}

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

你有2个组合问题,这是一个有趣的组合:你柜台上的奇怪/偶数问题以及使用cdf.to_csv('/path/to/file.csv',index=False) 代替lstripstrip删除了改变你的换行符线。

我重写了你的代码,删除了现在没用的最后一部分,现在它按预期工作了。

strip

答案 1 :(得分:1)

在循环中运行两个计数器可能会非常混乱。并且你没有正确剥离那些行。

以下内容可以用itertools.count对象替换indexcount。新行字符将添加到write方法的行中:

from itertools import count

c = count() # set up a counter that starts from zero
with open('coordinates.txt') as f, open('coordinatesFormatted.txt', 'w') as fout:
    for line in f:
        line = line.strip()
        if  line == 'atom':
            line += str(next(c)) # get the next item from the counter
        fout.write(line + '\n')