Найти - Пользователи
Полная версия: Автозамена
Начало » Python для новичков » Автозамена
1
widg
в файле in.txt:
text@
text
text@
@
text
@

Надо заменить все символы @ на номер по порядку
Нашёл функцию replace и вот что написал:

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
помогите плиз
Firik
У вас счетчик увеличивается для каждой новой строки, а не только там, где есть этот символ.
botinag
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)
py.user.next
>>> 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']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB