Найти - Пользователи
Полная версия: writelines и запись посторочно
Начало » Python для новичков » writelines и запись посторочно
1
ss100s
Есть ‘list’ такого содержания:
 ['@dom1.com', '@ddom2.com', '@dom3.com', '@dom4.com', '@dom5.com', '@dom6.com', '@dom7.com']
 f.writelines(list)
Записало его в таком формате:
@dom1.com@ddom2.com@dom3.com@dom4.com@dom5.com@dom6.com@dom7.com
что неожиданно. Нужно построчно:
@dom1.com
@ddom2.com
@dom3.com
@dom4.com
@dom5.com
@dom6.com
@dom7.com
pyuser
 data = ['@dom1.com', '@ddom2.com', '@dom3.com', '@dom4.com', '@dom5.com', '@dom6.com', '@dom7.com']
with open("имя_файла", "wt", encoding="utf-8) as f:
    f.write("\n".join(data))
doza_and
может
 print(i,file=f)
py.user.next
Если список длинный (10000 элементов), то надо пропустить через генератор.
  
>>> import sys
>>> 
>>> lst = ['a', 'b', 'c']
>>> 
>>> g = (i + '\n' for i in lst)
>>> 
>>> sys.stdout.writelines(g)
a
b
c
>>>
ss100s
Еще такой момент. Хотел убрать все @ таким образом:
 dom = dom.replace('@','')
Но похоже с списками не работает:
 AttributeError: 'list' object has no attribute 'replace'
doza_and
 for i in lst:
    print(i[1:], file=f)
называть объект list нежелательно т.к. это прячет настоящий list
ss100s
Не сообразил, что значит
  file=f
doza_and
 for i in lst: 
    print(i[1:])
распечатывает элементы списка построчно. Как из загнать обратно в список?
doza_and
ss100s
Как из загнать обратно в список?
Из это их?
Вы не просили список это уже другая задача

ss100s
,file=f
 data = ['@dom1.com', '@ddom2.com', '@dom3.com', '@dom4.com', '@dom5.com', '@dom6.com', '@dom7.com']
xd = [i[1:] for i in data]
with open("a.dat", "wt", encoding="utf-8") as f:
    for i in xd:
        print(i,file=f)

Имейте ввиду правильность кода зависит от контрактов относительно входных данных. вы про это ничего не сказали.
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