0
votes

Pour x dans File.split ('\ r \ n'): TypeError: Un objet de type octet est requis, pas 'str'

Je veux rechercher essentiellement des mots-clés dans une liste, mais je ne sais pas comment corriger mon code, donc je ne reçois pas cette erreur. xxx


0 commentaires

5 Réponses :


0
votes

La fonction de lecture sur un zipfile retourne des octets.

Donc, donc décoder les octets au format UTF-8, qui est le codeur le plus sûr que vous pouvez utiliser pour un fichier texte si vous ne connaissez pas le codage exact < Pré> xxx


2 commentaires

Cela corrige un problème, mais crée une nouvelle.


Merci, j'ai essayé ça et puis j'ai eu une erreur me disant que cela voulait une chaîne pas d'octets lol, mais j'ai fixé le problème. Merci



0
votes

Si vous changez comme ça, cela fonctionnera:

suspicious = []

zip = zipfile.ZipFile("C:/Users/Oliver/Documents/website_urls/urls.zip")
file =  zip.read("domain-names.txt")
for x in file.split(b'\r\n'):
    strX = str(x)
    if "apple" in strX and "support" in strX:
        print("suspicious address found"+ strX)
        suspicious.append(strX.replace('\n', ''))


0 commentaires

0
votes

zip.read code> retourne un objet octets code> objet. Si vous savez que c'est un texte, vous devez le décoder d'abord à un objet STR code> avant de le travailler plus loin.

import io
import zipfile

zip = zipfile.ZipFile("C:/Users/Oliver/Documents/website_urls/urls.zip")
file = io.StringIO(zip.read("domain-names.txt").decode(), newline=None)
for x in file:
    if "apple" in x and "support" in x:
        print("suspicious address found"+ x)
        suspicious.append(x.rstrip('\n'))


0 commentaires

1
votes

C'est parce que vous mélangez STR avec des octets. La valeur du fichier est d'octets afin que vous ne puissiez pas le diviser par une chaîne ('\ r \ n'). Vous avez 2 choix ici:

  1. Convertissez le caractère divisé en octets (B '\ r \ n'). Dans ce cas, vous devez également modifier votre si, en état d'utilisation pour utiliser les octets et remplacer également les caractères que vous avez à remplacer à l'octet puisque x est également d'octets
  2. Convertissez le fichier en chaîne (fichier.decode ("utf-8") si votre fichier est UTF-8) dans ce cas, votre code devrait fonctionner correctement sans changement

    donc le changement simple serait cette (deuxième approche) xxx

    approche de base octet (première approche) xxx


0 commentaires

0
votes

Vous devez faire un objet de fichier .Decode () avant "pour" boucle. CODE CORODE ci-dessous.

suspicious = []

zip = zipfile.ZipFile("C:/Users/Kamil/urls.zip")
file =  zip.read("domain-names.txt")
file = file.decode()
for x in file.split('\r\n'):

    if "apple" in x and "support" in x:
        print("suspicious address found"+ x)
        suspicious.append(x.replace('\n', ''))


0 commentaires