utf8 type print python unicode

type - Usando un formato Unicode para `time.strftime()` de Python



type unicode python (3)

Estoy intentando llamar a la función time.strftime() Python usando una cadena de formato Unicode:

u''%d/u200f/%m/u200f/%Y %H:%M:%S''

( /u200f es la "Marca de derecha a izquierda" (RLM)).

Sin embargo, estoy recibiendo una excepción de que el carácter RLM no se puede codificar en ascii:

UnicodeEncodeError: el codec ''ascii'' no puede codificar el carácter u ''/ u200f'' en la posición 2: ordinal no está dentro del rango (128)

He intentado buscar una alternativa, pero no pude encontrar una razonable. ¿Existe una alternativa a esta función, o una forma de hacerlo funcionar con caracteres Unicode?


Debe leer un archivo como Unicode y luego convertirlo al formato de fecha y hora.

from datetime import datetime f = open(LogFilePath, ''r'', encoding=''utf-8'') # Read first line of log file and remove ''/n'' from end of it Log_DateTime = f.readline()[:-1]

Puede definir el formato de fecha y hora de esta manera:

fmt = "%Y-%m-%d %H:%M:%S.%f"

Pero algunos lenguajes de programación como C # no lo admiten fácilmente, por lo que puede cambiarlo a:

fmt = "%Y-%m-%d %H:%M:%S"

O puedes usarlo de la siguiente manera (para satisfacer.% F):

Log_DateTime = Log_DateTime + ''.000000''

Si tiene un símbolo no reconocido (un símbolo Unicode), también debe eliminarlo.

# Removing an unrecognized symbol at the first of line (first character) Log_DateTime = Log_DateTime[1:] + ''.000000''

Al final, debe convertir la fecha y hora de la cadena al formato de fecha y hora real:

Log_DateTime = datetime.datetime.strptime(Log_DateTime, fmt) Current_Datetime = datetime.datetime.now() # Default format is ''%Y-%m-%d %H:%M:%S.%f'' # Calculate different between that two datetime and do suitable actions Current_Log_Diff = (Current_Datetime - Log_DateTime).total_seconds()


Muchas funciones de biblioteca estándar aún no admiten Unicode como deberían. Puede utilizar esta solución:

import time my_format = u''%d/u200f/%m/u200f/%Y %H:%M:%S'' my_time = time.localtime() time.strftime(my_format.encode(''utf-8''), my_time).decode(''utf-8'')


Puede formatear la cadena a través de la codificación utf-8:

time.strftime(u''%d/u200f/%m/u200f/%Y %H:%M:%S''.encode(''utf-8''), t).decode(''utf-8'')