Je veux analyser les fichiers markdown pour des éléments spécifiques (tels que des liens) et extraire des valeurs de ces éléments, et je n'arrive pas à trouver un moyen d'utiliser le paquetage python-markdown. Est-il possible de le faire en utilisant ce paquet, ou devrais-je rendre .md en html et ensuite utiliser un outil comme beautiful-soup pour analyser le html pour obtenir des éléments et/ou de la structure?Analyse des éléments en dehors de la démarque
2
A
Répondre
1
est ici une bibliothèque qui pourrait fonctionner pour vous: https://github.com/revolunet/sublimetext-markdown-preview
0
une option python3 est ReParser
pip install ReParser
l'exemple dans ses docs (collé à la fin) génèrerait:
[('Hello ', {}),
('bold', {'is_bold': True}),
(' world!', {}),
('\n', {'segment_type': 'LINE_BREAK'}),
('You can ', {}),
('try ', {'is_bold': True}),
('this', {'is_bold': True, 'is_italic': True}),
(' awesome', {'is_bold': True}),
(' ', {}),
('link', {'link_target': 'http://www.eff.org'}),
('.', {})]
l'exemple de code est:
import re
from pprint import pprint
from reparser import Parser, Token, MatchGroup
boundary_chars = r'\s`!()\[\]{{}};:\'".,<>?«»“”‘’*_~='
b_left = r'(?:(?<=[' + boundary_chars + r'])|(?<=^))' # Lookbehind
b_right = r'(?:(?=[' + boundary_chars + r'])|(?=$))' # Lookahead
markdown_start = b_left + r'(?<!\\){tag}(?!\s)(?!{tag})'
markdown_end = r'(?<!{tag})(?<!\s)(?<!\\){tag}' + b_right
markdown_link = r'(?<!\\)\[(?P<link>.+?)\]\((?P<url>.+?)\)'
newline = r'\n|\r\n'
url_proto_regex = re.compile(r'(?i)^[a-z][\w-]+:/{1,3}')
def markdown(tag):
"""Return sequence of start and end regex patterns for simple Markdown tag"""
return (markdown_start.format(tag=tag), markdown_end.format(tag=tag))
def url_complete(url):
"""If URL doesn't start with protocol, prepend it with http://"""
return url if url_proto_regex.search(url) else 'http://' + url
tokens = [
Token('bi1', *markdown(r'\*\*\*'), is_bold=True, is_italic=True),
Token('bi2', *markdown(r'___'), is_bold=True, is_italic=True),
Token('b1', *markdown(r'\*\*'), is_bold=True),
Token('b2', *markdown(r'__'), is_bold=True),
Token('i1', *markdown(r'\*'), is_italic=True),
Token('i2', *markdown(r'_'), is_italic=True),
Token('pre3', *markdown(r'```'), skip=True),
Token('pre2', *markdown(r'``'), skip=True),
Token('pre1', *markdown(r'`'), skip=True),
Token('s', *markdown(r'~~'), is_strikethrough=True),
Token('u', *markdown(r'=='), is_underline=True),
Token('link', markdown_link, text=MatchGroup('link'),
link_target=MatchGroup('url', func=url_complete)),
Token('br', newline, text='\n', segment_type="LINE_BREAK")
]
parser = Parser(tokens)
text = ('Hello **bold** world!\n'
'You can **try *this* awesome** [link](www.eff.org).')
segments = parser.parse(text)
pprint([(segment.text, segment.params) for segment in segments])
Questions connexes
- 1. Analyse des éléments xCal en PHP
- 2. Calcul/analyse des éléments de la liste (liens) en parallèle
- 3. Ecrivez une marque en utilisant la démarque
- 4. Bug Firefox: Liens en dehors des éléments de bloc
- 5. comment manipuler des éléments en dehors de iframe
- 6. wpf itemscontrol éléments en dehors du contrôle
- 7. La démarque de bootstrap ne fonctionne pas
- 8. Accéder aux éléments en dehors d'un iframe?
- 9. Analyse XML en Python avec l'arborescence des éléments
- 10. Programme de démarque avec SmartyPants
- 11. android rss analyse, obtenir des éléments enfant
- 12. Positionnement en dehors des Iframes
- 13. Android ajouter des éléments supplémentaires à spinner en dehors de la colonne de base de données
- 14. Possibilité d'intégrer la démarque dans erb?
- 15. Prototype 1.7: Existe-t-il un moyen de sérialiser des éléments en dehors de la forme?
- 16. javascript showdown, démarque pas parsing correctement
- 17. Analyse des éléments de fil personnalisés à l'aide de FeedZirra
- 18. Est-ce que Ruby/Slim prend en charge la démarque?
- 19. Possibilité de désactiver la démarque dans l'analyse HTML?
- 20. Séparer les listes dans la démarque
- 21. Échapper HTML dans la démarque dans HAML
- 22. Dessiner en dehors des limites de UITableViewCell
- 23. Android: comment puis-je référencer des éléments de mise en page en dehors de l'activité principale?
- 24. Conversion de texte de démarque en cahier ipython
- 25. Analyse des éléments et des attributs XML avec Perl
- 26. Qu'est-ce qu'un exemple de démarque invalide?
- 27. RedirectToAction en dehors des zones
- 28. Analyse du fichier JSON externe (contenant des éléments de tableau) en Javascript en utilisant JQuery
- 29. cattr_accessor en dehors des rails
- 30. Analyse de la chaîne et collecte des éléments HTML avec des ID différents
python 3 https://pypi.python.org/pypi/ReParser/1.4 – n611x007