Когда я читаю файл в utf-8 .find () не работает - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь прочитать этот файл (хранится в файле "apartadoB.txt")

Я написал этот код, но он не работает (ничего не печатается)

file = open("apartadoB.txt","rb")

for i in file.readlines():

    i = str(i.decode('utf-8','ignore'))

    if i.find('Respuesta') != -1:
        print(i)

file.close()

apartadoB.txt:

�� Haciendo ping 10.3.7.0 с 572 байтами данных: Respuesta desde 10.3.7.0: байт = 572 tiempo = 228 мс TTL = 253

Estad�раздел 10.3.7.0: Пакеты: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: M�nimo = 228ms, M�ximo = 228ms, Media =228ms

Haciendo ping a 10.4.2.5 con 572 bytes de datos: Respuesta desde 10.4.2.5: байты = 572 tiempo = 11ms TTL = 254

Estad�sticas de ping пункт 10.4.2.5:Пакеты: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: M�nimo = 11ms, M�ximo = 11ms, Media = 11ms

Haciendoping a 10.3.7.0 con 572 bytes de datos: Respuesta desde 10.3.7.0: bytes = 572 tiempo = 225ms TTL = 253

Estad�sticaпункт 10.3.7.0: Пакеты: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: M�nimo = 225ms, M�ximo = 225ms, Media =225мс

. ,.

1 Ответ

0 голосов
/ 02 ноября 2019

Используя следующие данные, закодированные как UTF-8 в apartadoB.txt:

Haciendo ping a 10.3.7.0 con 572 bytes de datos: Respuesta desde 10.3.7.0: bytes=572 tiempo=228ms TTL=253
Estadísticas de ping para 10.3.7.0: Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: Mínimo = 228ms, Máximo = 228ms, Media = 228ms
Haciendo ping a 10.4.2.5 con 572 bytes de datos: Respuesta desde 10.4.2.5: bytes=572 tiempo=11ms TTL=254
Estadísticas de ping para 10.4.2.5: Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: Mínimo = 11ms, Máximo = 11ms, Media = 11ms
Haciendo ping a 10.3.7.0 con 572 bytes de datos: Respuesta desde 10.3.7.0: bytes=572 tiempo=225ms TTL=253
Estadísticas de ping para 10.3.7.0: Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: Mínimo = 225ms, Máximo = 225ms, Media = 225ms

Для чтения рекомендуется следующий код:

  • with автоматически закрываетфайл.
  • open должен быть в текстовом режиме (по умолчанию) и указывать кодировку.
  • readlines() не требуется. Выполните итерацию непосредственно над файлом.
  • строки (i) будут уже декодированы с использованием UTF-8.
  • end='', поскольку в i строках уже будет новая строка.

with open('apartadoB.txt',encoding='utf8') as file:
    for i in file:
        if i.find('Respuesta') != -1:
            print(i)

Вывод:

Haciendo ping a 10.3.7.0 con 572 bytes de datos: Respuesta desde 10.3.7.0: bytes=572 tiempo=228ms TTL=253
Haciendo ping a 10.4.2.5 con 572 bytes de datos: Respuesta desde 10.4.2.5: bytes=572 tiempo=11ms TTL=254
Haciendo ping a 10.3.7.0 con 572 bytes de datos: Respuesta desde 10.3.7.0: bytes=572 tiempo=225ms TTL=253
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...