python как пропарсить javascript строки?

Нужно пропарсить js код, и вытащить нужные значения.

js = """
"auth_token":"zI1NiJ9.eyJza","app_config":[],"return_auth_hash":null};
"""

Как я могу вытащить значение из auth_token?
Пытался через re+bs4 но не получилось
Скорее всего ошибка в этой строке

pattern = re.compile(r'\\"auth_token\\":\s*\\"(.*?)\\"', re.MULTILINE | re.DOTALL)

Ответы (3 шт):

Автор решения: Kers

Попробуйте через findall:

import re

js = """
"auth_token":"zI1NiJ9.eyJza","app_config":[],"return_auth_hash":null};
"""
p = re.compile("auth_token\":\s*\"(.*?)\"")
m = p.findall(js)
print(m) # ['zI1NiJ9.eyJza']

Вы скорее всего и искали через match, в данном случае есть проблемы со строкой из тройных кавычек.

→ Ссылка
Автор решения: CrazyElf

Экранировать кавычки в питоне вообще не нужно, если строка у вас в одних кавычках ', а внутри строки другие кавычки ". Тем более, что экранирование и не будет работать как экранирование при использовании raw string (символ r перед строкой). А вы даже дважды пытаетесь кавычки экранировать, у вас в шаблоне в итоге просто получаются лишние символы \\, которых в самой строке, конечно, нет. Достаточно убрать ненужное экранирование кавычек и всё заработает:

pattern = re.compile(r'"auth_token":\s*"(.*?)"', re.MULTILINE | re.DOTALL)

Вывод:

['zI1NiJ9.eyJza']
→ Ссылка
Автор решения: insolor

Можно подпилить эту строку до вида корректного json, и разобрать с помощью соответствующего модуля:

js = """
"auth_token":"zI1NiJ9.eyJza","app_config":[],"return_auth_hash":null};
""".strip().rstrip(';')

js = '{' + js

import json

print(json.loads(js)['auth_token'])  # Вывод: zI1NiJ9.eyJza
→ Ссылка