Форум сайта python.su
0
в файле in.txt:
text@ text text@ @ text @
n=1 word = "@" o = open("out.txt","a") #open for append for line in open("in.txt"): line = line.replace(word,str(n)) n=n+1 o.write(line + "\n") o.close()
text1 text text3 4 text 6
Офлайн
6
У вас счетчик увеличивается для каждой новой строки, а не только там, где есть этот символ.
Офлайн
35
n=1 word = "@" o = open("out.txt","a") #open for append for line in open("in.txt"): line = line.replace(word,str(n)) if word in line: n=n+1 o.write(line + "\n") o.close()
def f(f_in, f_out, word): count = 0 with open(f_in) as fin, open(f_out, 'w') as fout: for line in fin.readlines(): if word in line: count += 1 line = line.replace(word, str(count)) fout.write(line)
Отредактировано botinag (Дек. 16, 2015 09:55:43)
Офлайн
857
>>> s = """\ ... text@ ... text ... text@ ... @ ... text ... @ ... @@ ... """ >>> >>> import io >>> >>> fin = io.StringIO(s) >>> >>> out, n = [], 0 >>> for line in fin: ... tmp = [] ... for c in line: ... if c == '@': ... n += 1 ... tmp.append(str(n)) ... else: ... tmp.append(c) ... out.append(''.join(tmp)) ... >>> out ['text1\n', 'text\n', 'text2\n', '3\n', 'text\n', '4\n', '56\n'] >>>
Офлайн