Fermer

avril 15, 2025

Convertissez un fichier texte à partir de UTF-8 Encoding en ANSI à l’aide de Python dans AWS Glue / Blogs / Perficient

Convertissez un fichier texte à partir de UTF-8 Encoding en ANSI à l’aide de Python dans AWS Glue / Blogs / Perficient


Aperçu:

Pour convertir un fichier texte à partir de données codées UTF-8 en ANSI à l’aide d’AWS Glue, vous travaillerez généralement avec Python ou Pyspark. Cependant, il est important de comprendre que l’ANSI n’est pas un encodage spécifique mais fait souvent référence à Windows-1252 (ou encodages 8 bits similaires) dans un contexte Windows.

AWS Glue, en cours d’exécution sur Apache Spark, utilise UTF-8 comme codage par défaut. La conversion en ANSI nécessite de gérer le codage des caractères pendant la phase d’écriture, car Spark lui-même ne prend pas en charge les fichiers d’écriture dans des encodages autres que UTF-8 nativement. Mais il y a quelques solutions de contournement.

Voici un guide étape par étape pour convertir un fichier texte de UTF-8 en ANSI à l’aide de Python dans AWS Glue, en supposant que vous travaillez avec un fichier texte brut et que vous souhaitez publier un fichier formaté de manière similaire dans le codage ANSI.

Flux de processus général:

Guide technique d’approche étape par étape:

Étape: Ajoutez les dépôts d’importation au code

import boto3
import codecs

Étape2: Spécifiez les chemins de fichier source / cible et les détails du seau S3

# Initialize S3 client
s3_client = boto3.client('s3')
s3_key_utf8 = ‘utf8_file_path/filename.txt’
s3_key_ansi = 'ansi_file_path/filename.txt'

# Specify S3 bucket and file paths
bucket_name = outgoing_bucket #'your-s3-bucket-name'
input_key = s3_key_utf8   #S3Path/name of input UTF-8 encoded file in S3
output_key = s3_key_ansi  #S3 Path/name to save the ANSI encoded file

Étape3: Écrivez une fonction pour convertir le fichier texte de UTF-8 en ANSI, en fonction des paramètres fournis (nom de seau S3, fichier source, file cible)

# Function to convert UTF-8 file to ANSI (Windows-1252) and upload back to S3
def convert_utf8_to_ansi(bucket_name, input_key, output_key):
    # Download the UTF-8 encoded file from S3
    response = s3_client.get_object(Bucket=bucket_name, Key=input_key)
    # Read the file content from the response body (UTF-8 encoded)
    utf8_content = response['Body'].read().decode('utf-8')
    # Convert the content to ANSI encoding (Windows-1252)
    ansi_content = utf8_content.encode('windows-1252', 'ignore')  # 'ignore' to handle invalid characters
    # Upload the converted file to S3 (in ANSI encoding)
    s3_client.put_object(Bucket=bucket_name, Key=output_key, Body=ansi_content) 

Étape 4: Appelez la fonction qui convertit le fichier texte de UTF-8 à ANSI

# Call the function to convert the file 
convert_utf8_to_ansi(bucket_name, input_key, output_key) 






Source link