essodjolo / bible

The Bible in computer readable formats & REST API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Encoding error with python

jdjenontin opened this issue · comments

The python example does not work with verses with special characters (Non ascii)
Add encoding to correct

with open(data, 'r', encoding='utf8') as kjv_bible:
    kjv = yaml.safe_load(kjv_bible)
    print(kjv['books']['John'][3][16])

Hi @jdjenontin
Thank you for testing and reporting.
Can you share more details on:

  • version of Python
  • the error you had

Python 311

Code Sample

def load_bible():
    with open('data\lsg.yml', 'r') as file:
        bible_data = yaml.safe_load(file)
    return bible_data


load_bible()

Tracelog

Traceback (most recent call last):
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\reader.py", line 89, in peek       
    return self.buffer[self.pointer+index]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
IndexError: string index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\udjen\Workspace\bible\main.py", line 12, in <module>
    load_bible()
  File "c:\Users\udjen\Workspace\bible\main.py", line 8, in load_bible
    bible_data = yaml.safe_load(file)
                 ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\__init__.py", line 125, in safe_load
    return load(stream, SafeLoader)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\__init__.py", line 81, in load     
    return loader.get_single_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\constructor.py", line 49, in get_single_data
    node = self.get_single_node()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 36, in get_single_node
    document = self.compose_document()
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\composer.py", line 64, in compose_node
    if self.check_event(AliasEvent):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\parser.py", line 98, in check_event
    self.current_event = self.state()
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\scanner.py", line 666, in fetch_flow_scalar
    self.tokens.append(self.scan_flow_scalar(style))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\scanner.py", line 1152, in scan_flow_scalar
    chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\scanner.py", line 1190, in scan_flow_scalar_non_spaces
    while self.peek(length) not in '\'\"\\\0 \t\r\n\x85\u2028\u2029':
          ^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\reader.py", line 91, in peek       
    self.update(index+1)
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\reader.py", line 153, in update    
    self.update_raw()
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\site-packages\yaml\reader.py", line 178, in update_raw    data = self.stream.read(size)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\udjen\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 7417: character maps to <undefined> 

Thanks again @jdjenontin

Closing this as solved by #2