J'essaie d'analyser une chaîne pour trouver tous les caractères entre deux délimiteurs J'ai tenté d'utiliser des expressions régulières, mais je n'arrive pas à comprendre ce qui se passe. p> ma tentative: p> où Procréed_df ["question"] [2] code> est la chaîne (cette chaîne est continue, je l'ai tapé dans plusieurs lignes pour la lisibilité): p> code> et code> code>. test_string = '<code> this is a test </code>'
3 Réponses :
Je pense que le problème est le caractère NEWLINE \ N, assurez-vous simplement de correspondre à l'aide du drapeau dotall code> tel que import re
regex = r"<code>(.*)\<\/code>"
test_str = ("<code>for x in finallist:\\n matchinfo = \n"
" requests.get(\"https://api.opendota.com/api/matches/{}\".format(x)).json() \n"
" [\"match_id\"]\\n print(matchinfo)\\n</code>\n")
re.findall(regex, test_str, re.DOTALL)
'for x in finallist:\\n matchinfo = \n requests.get("https://api.opendota.com/api/matches/{}".format(x)).json() \n ["match_id"]\\n print(matchinfo)\\n'
dotall code> seul suffit.
@blhsing, noté et enlevé.
La question ne dit pas explicitement que cela nécessite par exemple p> expressions régulières code>. Avec cela, je dirais que je ne les utiliserais pas est le meilleur:
Votre pourrait être meilleur avec un analyseur HTML que REGEX
import lxml.html
html_snippet = """
...
<p>Some stuff</p>
...
<code>for x in finallist:\n matchinfo =
requests.get("https://api.opendota.com/api/matches/{}".format(x)).json()
["match_id"]\n print(matchinfo)\n</code>
...
And some Stuff
...
another code block <br />
<code>
print('Hello world')
</code>
"""
dom = lxml.html.fromstring(html_snippet)
codes = dom.xpath('//code')
for code in codes:
print(code.text)
>>>> for x in finallist:
>>>> matchinfo =
>>>> requests.get("https://api.opendota.com/api/matches/{}".format(x)).json()
>>>> ["match_id"]
>>>> print(matchinfo)
>>>> print('Hello world')
Cette solution fonctionnerait-elle s'il existe plusieurs blocs de code dans l'extrait HTML? J'essaie de capturer plusieurs blocs de code dans une seule chaîne et d'extraire des fonctionnalités de chaque section du code.
Je ne vois pas
code> code> dans cette chaîne d'échantillon.Je m'excuse, je l'ai accidentellement supprimé lors de la coupe et du collage. Je l'ai corrigé.