удалить b ', \ r, \ n' в 1 огромной строке - PullRequest
0 голосов
/ 12 октября 2018
url = FINAM_URL + symbol+"_" + start_date_rev + "_" + end_date_rev + ".csv?" + params
txt=str(urlopen(url).readlines())
local_file = open('company_quotes.txt', "w")
local_file.write(txt)
local_file.close()

Я получаю файл с 1 очень большой строкой enter image description here

Я хочу, чтобы мой файл был без символов b ', \ r, \ n' и выглядел какэто (много строк):

enter image description here

Ответы [ 4 ]

0 голосов
/ 12 октября 2018

txt=str(urlopen(url).readlines()) это проблема.Вам нужно вызывать .decode() в каждой строке вместо использования str().Например:

with open('company_quotes.txt', "w") as local_file:
    for line in urlopen(url).readlines():
        local_file.write(line.decode())
0 голосов
/ 12 октября 2018

Использование replace ()

with open('company_quotes.txt', 'r') as f:
    for line in f.readlines:
        line = line.replace('\r\n', '')
0 голосов
/ 12 октября 2018

Данные, которые вы получаете с этого URL, являются байтами, поэтому вы можете просто записать данные непосредственно в ваш файл в двоичном формате следующим образом:

url = FINAM_URL + symbol+"_" + start_date_rev + "_" + end_date_rev + ".csv?" + params
data = urlopen(url).read()

with open('company_quotes.txt', 'wb') as local_file:
    local_file.write(data)

Символы \r\n являются символами новой строки,поэтому их запись, как показано, приведет к тому, что ваш файл будет записан правильно в несколько строк.

0 голосов
/ 12 октября 2018

b указывает на байтовый объект. Вы должны преобразовать байты в строку, используя .decode( "utf-8" ).Вы также должны использовать .strip() для удаления лишних символов, таких как \n\r на концах строк.

Так что используйте:

for line in lines:
    clean_line = line.strip().decode( "utf-8" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...