Как сохранить строку в файле в виде строки в кавычках? - PullRequest
0 голосов
/ 18 января 2020

У меня есть файл file.md, который я хочу прочитать и получить его в виде строки. Затем я хочу взять эту строку и сохранить ее в другом файле, но в виде строки с кавычками (и все). Причина в том, что я хочу перенести содержимое моего файла уценки в строку уценки, чтобы я мог включить его в html с помощью библиотеки javascript marked.

Как это сделать с помощью python script?

Вот что я пробовал до сих пор:

with open('file.md', 'r') as md:
    text=""
    lines = md.readlines()
    for line in lines:
        line = "'" + line + "'" + '+'
        text = text + line
    with open('file.txt', 'w') as txt:
        txt.write(text)

Вход file.md

This is one line of markdown
This is another line of markdown

This is another one

Желаемый вывод: file.txt

"This is one line of markdown" +
"This is another line of markdown" +
(what should come here by the way to encode an empty line?)
"This is another one"

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Это работает:

>>> a = '''This is one line of markdown
... This is another line of markdown
... 
... This is another one'''
>>> lines = a.split('\n')
>>> lines = [ '"' + i + '" +' if len(i) else i for i in lines]
>>> lines[-1] = lines[-1][:-2]   # drop the '+' at the end of the last line
>>> print '\n'.join( lines )
"This is one line of markdown" +
"This is another line of markdown" +

"This is another one"

Вы можете добавить чтение / запись в файлы самостоятельно.

0 голосов
/ 18 января 2020

Здесь нужно обратить внимание на две вещи. Во-первых, вы не должны менять свой итератор line, пока он работает через lines. Вместо этого назначьте его новой строковой переменной (я называю это new_line). Во-вторых, если вы добавите больше символов в конце каждого line, он будет помещен после символа конца строки и, следовательно, будет перемещен в следующую строку, когда вы записываете его в новый файл. Вместо этого пропустите последний символ каждой строки и добавьте разрыв строки вручную.

Если я правильно вас понимаю, это должно дать вам желаемый результат:

with open('file.md', 'r') as md:
    text = ""
    lines = md.readlines()

for line in lines:
    if line[-1] == "\n":
        text += "'" + line[:-1] + "'+\n"
    else:
        text += "'" + line + "'+"

with open('file.txt', 'w') as txt:
    txt.write(text)

Обратите внимание, как последняя строка трактуется иначе, чем другие (без eol-char и без знака +). text += ... добавляет больше символов к существующей строке.

Это также работает и может быть немного лучше, потому что избегает оператора if. Вы можете удалить символ новой строки прямо при чтении содержимого из file.md. В конце вы пропускаете последние два символа вашего контента, которые являются + и \n.

with open('file.md', 'r') as md:
    text = ""
    lines = [line.rstrip('\n') for line in md]

for line in lines:
    text += "'" + line + "' +\n"

with open('file.txt', 'w') as txt:
    txt.write(text[:-2])

... и с использованием форматера:

text += "'{}' +\n".format(line)

... проверка на пустые строки, как вы просили в комментариях:

for line in lines:
    if line == '':
        text += '\n'
    else:
        text += "'{}' +\n".format(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...