Скажем, doc.txt
содержит
a
b
c
d
и что мой код
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
почему я получаю те же значения?
Скажем, doc.txt
содержит
a
b
c
d
и что мой код
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
почему я получаю те же значения?
str.rstrip()
удаляет конечную новую строку, а не все строки новой строки посередине. В конце концов, у вас есть одна длинная строка.
Используйте str.splitlines()
, чтобы разделить документ на строки без символов новой строки; вы можете присоединиться к нему, если хотите:
doclines = doc.splitlines()
doc_rejoined = ''.join(doclines)
но теперь doc_rejoined
будет иметь все строки, идущие вместе без разделителя.
Поскольку вы читаете весь документ в одну строку, которая выглядит так:
'a\nb\nc\nd\n'
Когда вы выполняете rstrip('\n')
в этой строке, будет удален только самый правый \n
, оставив все остальное нетронутым, поэтому строка будет выглядеть так:
'a\nb\nc\nd'
Решение состоит в том, чтобы разделить файл на строки, а затем на правую полосу каждой строки. Или просто замените все символы новой строки ничем: s.replace('\n', '')
, который дает вам 'abcd'
.
rstrip
разделяет конечные пробелы со всей строки. Если вы ожидали, что он будет работать с отдельными линиями, вам нужно разбить строку на строки сначала, используя что-то вроде doc.split('\n')
.
Попробуйте это вместо:
with open('doc.txt') as f:
for line in f:
print line,
Пояснение:
with
, который заботится о закрытии файла в концеfor line in f
rstrip()
, потому что мы читаем и печатаем по одной строке за разРассмотрите возможность использования replace и замены каждого экземпляра '\n' на ''. Это избавит вас от всех новых символов строки во входном тексте.