Разбор и обновление файла уценки с помощью Python - PullRequest
0 голосов
/ 29 мая 2019

Я создаю сценарий, который будет проходить файл уценки и обновлять любые теги изображений с

![Daffy Duck](http://www.nonstick.com/wp-content/uploads/2015/10/Daffy.gif)

до

![Daffy Duck](http://www.nonstick.com/wp-content/uploads/2015/10/Daffy.gif?alt-text="Daffy Duck")

Я новичок в Python, поэтому яЯ не уверен в синтаксисе и моем подходе, но в настоящее время я думаю о том, чтобы создать новую пустую строку, перебирать исходную уценку построчно, если обнаружен тег изображения, соединить альтернативный текст с правильным местоположением и добавить строки в новоестрока уценки.Код, который у меня есть, выглядит следующим образом:

import markdown
from markdown.treeprocessors import Treeprocessor
from markdown.extensions import Extension


originalMarkdown = '''
## New Article
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pretium nunc ligula. Quisque bibendum vel lectus sed pulvinar. Phasellus id magna ac arcu iaculis facilisis. Curabitur tincidunt sed ipsum vel lacinia. Nulla et semper urna. Quisque ultrices hendrerit magna nec tempor. 

![Daffy Duck](http://www.nonstick.com/wp-content/uploads/2015/10/Daffy.gif)
Quisque accumsan sem mi. Nunc orci justo, laoreet vel metus nec, interdum euismod ipsum. 
![Bugs Bunny](http://www.nationalnannies.com/wp-content/uploads/2012/03/bugsbunny.png)
 Suspendisse augue odio, pharetra ac erat eget, volutpat ornare velit. Sed ac luctus quam. Sed id mauris erat. Duis lacinia faucibus metus, nec vehicula metus consectetur eu.
'''

updatedMarkdown = ""

# First create the treeprocessor
class AltTextExtractor(Treeprocessor):
    def run(self, doc):
        "Find all alt_text and append to markdown.alt_text. "
        self.markdown.alt_text = []
        for image in doc.findall('.//img'):
         self.markdown.alt_text.append(image.get('alt'))

# Then traverse the markdown file and concatenate the alt text to the end of any image tags
class ImageTagUpdater(Treeprocessor):
    def run(self, doc):
      # Set a counter
      count = 0
      # Go through markdown file line by line
        for line in doc:
          # if line is an image tag
          if line > ('.//img'):
            # grab the array of the alt text
            img_ext = ImgExtractor(md)
            # find the second to last character of the line
            location = len(line) - 1
            # insert the alt text
            line += line[location] + '?' +  '"' + img_ext[count] +  '"'
            # add line to new markdown file 
        updatedMarkdownadd.add(line)

Приведенный выше код является псевдокодом.Я могу успешно извлечь нужные строки из исходного файла, но не могу объединить эти строки с соответствующими тегами изображений и обновить исходный файл.

1 Ответ

0 голосов
/ 29 мая 2019

Если ваши файлы не большие, может быть проще перезаписать файл, чем пытаться втиснуть маленькие кусочки здесь или там.

orig = '![Daffy Duck](http://www.nonstick.com/wp-content/uploads/2015/10/Daffy.gif)'
new = '![Daffy Duck](http://www.nonstick.com/wp-content/uploads/2015/10/Daffy.gif?alt-text="Daffy Duck")'

with open(filename, 'r') as f:
    text = f.readlines()
    new_text = "\n".join([line if line != orig else new for line in text])

with open(filename, 'w') as f:    
    f.write(new_text)

Вы также можете использовать регулярные выражения re.sub , но я полагаю, это вопрос предпочтений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...