Проблемы с Python-файлом file.write () и обработкой строк - PullRequest
0 голосов
/ 17 февраля 2011

Проблема, с которой я сталкиваюсь (будучи новичком в Python) - это запись строк в текстовый файл. Проблема, с которой я сталкиваюсь, заключается в том, что либо у строк нет разрывов строк между ними, либо есть разрыв строки после каждого символа. Код для следования:

import string, io

FileName = input("Arb file name (.txt): ")

MyFile = open(FileName, 'r')

TempFile = open('TempFile.txt', 'w', encoding='UTF-8')

for m_line in MyFile:
    m_line = m_line.strip()
    m_line = m_line.split(": ", 1)
    if len(m_line) > 1:
        del m_line[0]
    #print(m_line)
    MyString = str(m_line)
    MyString = MyString.strip("'[]")
    TempFile.write(MyString)


MyFile.close()
TempFile.close()

Мой ввод выглядит так:

1 Jargon
2 Python
3 Yada Yada
4 Stuck

Мой вывод, когда я это делаю:

JargonPythonYada YadaStuck

Затем я модифицирую исходный код так:

import string, io

FileName = input("Arb File Name (.txt): ")

MyFile = open(FileName, 'r')

TempFile = open('TempFile.txt', 'w', encoding='UTF-8')

for m_line in MyFile:
    m_line = m_line.strip()
    m_line = m_line.split(": ", 1)
    if len(m_line) > 1:
        del m_line[0]
    #print(m_line)
    MyString = str(m_line)
    MyString = MyString.strip("'[]")
    #print(MyString)
    TempFile.write('\n'.join(MyString))


MyFile.close()
TempFile.close()

Тот же ввод и мой вывод выглядит так:

J
a
r
g
o
nP
y
t
h
o
nY
a
d
a

Y
a
d
aS
t
u
c
k

В идеале мне бы хотелось, чтобы каждое слово появлялось на отдельной строке без цифр перед ними.

Спасибо

MarleyH

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Вы должны написать '\n' после каждой строки, так как вы удаляете оригинал '\n'; Ваша идея использовать '\n'.join() не работает, потому что она будет использовать \n для присоединения строки, вставляя ее между каждым символом строки. Вместо каждого имени вам нужен один \n.

import string, io

FileName = input("Arb file name (.txt): ")

with open(FileName, 'r') as MyFile:
    with open('TempFile.txt', 'w', encoding='UTF-8') as TempFile:
        for line in MyFile:
            line = line.strip().split(": ", 1)
            TempFile.write(line[1] + '\n')
1 голос
/ 17 февраля 2011
fileName = input("Arb file name (.txt): ")
tempName = 'TempFile.txt'

with open(fileName) as inf, open(tempName, 'w', encoding='UTF-8') as outf:
    for line in inf:
        line = line.strip().split(": ", 1)[-1]

        #print(line)
        outf.write(line + '\n')

Проблемы:

  1. результат str.split () представляет собой список (поэтому, когда вы приводите его к str, вы получаете ['my item')]).

  2. запись не добавляет новую строку;если вы хотите, вы должны добавить его явно.

...