<jupyter_start><jupyter_text>Códigos de caracteres en ficheroEn los archivo adjuntos 'quijote.txt'y 'quijoteansi.txt hemos dejado los primeros párrafos del libro que comparte nombre con el archivo guardados con dos códigos de caracteres distintos, utf-8 y ansi.Vamos a ver qué pasa si cargamos un párrafo cualquiera de ambos ficheros y los imprimimos.<jupyter_code># definimos una función que cargue todos los párrafos y seleccione uno 
def parrafo(numerodeparrafo):
    #primero cargamos el fichero
    fichero = open('quijote.txt')
    #lo leemos
    texto = fichero.read()
    #y seleccionamos el párrafo indicado en el parámetro 
    parrafos = texto.split('\n')
    while '' in parrafos: 
        parrafos.remove('')    
    parrafoseleccionado=parrafos[numerodeparrafo]
   
    #acordaos de cerrar el fichero si no lo habéis abierto con un with
    fichero.close()    
    return(parrafoseleccionado)

parrafo(8)<jupyter_output><empty_output><jupyter_text>Incorporamos ahora un parámetro a la carga del fichero para indicar a Python el código de caracteres.<jupyter_code>def parrafo(numerodeparrafo):
    #primero cargamos el fichero
    #fichero = open('quijote.txt', "r", encoding="utf-8")
    #fichero = open('quijote.txt', "r", encoding="ansi")
    #fichero = open('quijoteansi.txt', "r", encoding="ansi")
    fichero = open('quijoteansi.txt', "r", encoding="utf-8")
    
    #lo leemos
    texto = fichero.read()
    #y seleccionamos el párrafo indicado en el parámetro 
    parrafos = texto.split('\n')
    while '' in parrafos: 
        parrafos.remove('')    
    
    parrafoseleccionado=parrafos[numerodeparrafo]
     
    #acordaos de cerrar el fichero si no lo habéis abierto con un with
    fichero.close()    
    return(parrafoseleccionado)
parrafo(8)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09100998890122086, 'fraction_numerical': 0.002774694783573807, 'mean_word_length': 3.9262295081967213, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '173080', 'license': 'MIT', 'n_tokens_mistral': 681, 'n_tokens_neox': 690, 'n_words': 174, 'path': 'pythonUPVX40.ipynb', 'repo_name': 'Coldang/pythonMoocCompanion', 'size': '1802'}