Problem z "subprocess"

Problem z "subprocess"
WW
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 4 lata
  • Postów:23
0

Hejka, Ktoś może podpowie jak przerobić ten kod by działał poprawnie?
Windows 7 pro
Python 3.7
Kod błędu: UnicodeDecodeError: 'ascii' codec can't decode byte 0x88 in position 33: ordinal not in range(128) (chodzi o dokładnie ten fragment kodu: results = results.decode("ascii"))

Kopiuj
import subprocess

results = subprocess.check_output(["netsh", "wlan", "show", "network"])

results = results.decode("ascii")
results = results.replace("\r","")
ls = results.split("\n")
ls = ls[4:]
ssids = []
x = 0
while x < len(ls):
    if x % 5 == 0:
        ssids.append(ls[x])
    x += 1
print(ssids)
edytowany 1x, ostatnio: Wiktor Wariktor
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
0

results = results.decode("utf-8") a jak ustawisz na utf-8 to zadziała?


Zdalna praca dla Senior Python Developerów --> PW
WW
Nope, Próbowałem utf8 i utf-8 nie działało coś jest nie tak z składnią ale nie wiem co
BG
co zwraca repr(results) ? Nie masz tam przypadkiem symbolu euro w cp1250 (kod 128) ?
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
0

Nie wiemy co tam jest, Musisz postarać się o, tzw. Minimal, reproducible example:
https://stackoverflow.com/help/minimal-reproducible-example


SH
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Poznań
  • Postów:109
0

Też kiedyś miałem problem z replacem. Nie wiem, czy odpowiednia wersja pythona, ale usunąłem jakiekolwiek kodowania i dekodowania(results.decode('ascii')) i posłużyłem się pakietem re i metodą sub z flagą unicode. Pamiętam, że walczyłem z tym dość sporo i dopiero ta flaga mi pomogła.

Kopiuj
re.sub(r"\b%s\b", replacement_word, text, flags=re.UNICODE) 

https://docs.python.org/3/library/re.html

Może to pomoże ?

edytowany 1x, ostatnio: Soul_hunter_16

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.