how to fix - error: bad escape \u at position 0

27,385

Solution 1

This is an error in Python 3.7, and an issue with Python 3.6 (but it is OK with Python 2.7).

If you use a raw string (prefixed by "r") for the replacement in re.sub function, then the \u is escaped. For instance, r'\u003c\1' is like '\\u003c\\1': this is a string '\u', followed by '003c' and \1.

The solution is to write:

return script_escape_re.sub('\u003c\\1', s)

Quoting the documentation:

Changed in version 3.7: Unknown escapes in repl consisting of '\' and an ASCII letter now are errors.

Solution 2

I was facing a similar issue while trying to escape Unicode characters that have the pattern \uXXXX. Let's take a string containing Unicode characters:

>>> text = "The \u201c\u3010\u3011\u201d in this template are used to mark the variables"
>>> text
'The “【】” in this template are used to mark the variables'

Escape the Unicode characters:

>>> text = text.encode('unicode_escape').decode('ascii')
>>> text
'The \\u201c\\u3010\\u3011\\u201d in this template are used to mark the variables'

And then replace them using re.sub(r'\\u(.){4}', '', text):

>>> import re
>>> re.sub(r'\\u(.){4}', '', text)
'The  in this template are used to mark the variables'
Share:
27,385
Admin
Author by

Admin

Updated on January 19, 2021

Comments

  • Admin
    Admin over 3 years

    Hello I'm trying to export a gmap html using ipywidgets in jupyter notebook but am encountering the following error: - error: bad escape \u at position 0.

    I'm new to programing and could use help fixing whatever is causing this error to occur. If there is any easier way to go about exporting the html file I'm happy to change approaches.

    Thanks


    Here is a snippet of the code: I can add the entire thing if its helpful.

    import pandas as pd
    import gmaps
    from ipywidgets.embed import embed_minimal_html
    from ipywidgets import IntSlider
    gmaps.configure(api_key='XXXX')
    pd.options.mode.chained_assignment = None  # default='warn'
    
    
    file2 = '005 lat:long.csv'
    state2 = pd.read_csv(file2)
    state2 = state2.rename(columns={'Address1': 'address', 'City':'city', 
                                    'State':'state', 'Zip': 'zip'})
    
    storenumbs = state2['Store'].str.split('#', expand=True)
    state2 = state2.join(storenumbs)
    state2 = state2.drop(['Store', 0], axis=1)
    state2 = state2.rename(columns={1: 'store_#'})
    state2['store_#'] = state2['store_#'].astype(int)
    
    fig = gmaps.figure(center=(42.5, -71.4), map_type='TERRAIN', zoom_level=9.8)
    scale = 4
    one_layer = (gmaps.symbol_layer(low_points_lat_long, fill_color='red', stroke_color='red', scale= scale))
    two_layer = (gmaps.symbol_layer(low_med_points_lat_long, fill_color='red', stroke_color='yellow', scale= scale))
    three_layer = (gmaps.symbol_layer(med_high_points_lat_long, fill_color='yellow', stroke_color='green', scale= scale))
    four_layer = (gmaps.symbol_layer(high_points_lat_long, fill_color='green', stroke_color='green', scale= scale))
    
    
    fig.add_layer(one_layer)
    fig.add_layer(two_layer)
    fig.add_layer(three_layer)
    fig.add_layer(four_layer)
    
    fig
    embed_minimal_html('export.html', views=[fig]
    

    Long Form Error Bellow


    )
    
    KeyError                                  Traceback (most recent call last)
    ~/miniconda3/lib/python3.7/sre_parse.py in parse_template(source, pattern)
       1020                 try:
    -> 1021                     this = chr(ESCAPES[this][1])
       1022                 except KeyError:
    
    KeyError: '\\u'
    
    During handling of the above exception, another exception occurred:
    
    error                                     Traceback (most recent call last)
    <ipython-input-7-c096ac365396> in <module>
         20 
         21 slider = IntSlider(value=40)
    ---> 22 embed_minimal_html('export.html', views=[slider], title='Widgets export')
    
    ~/miniconda3/lib/python3.7/site-packages/ipywidgets/embed.py in embed_minimal_html(fp, views, title, template, **kwargs)
        300     {embed_kwargs}
        301     """
    --> 302     snippet = embed_snippet(views, **kwargs)
        303 
        304     values = {
    
    ~/miniconda3/lib/python3.7/site-packages/ipywidgets/embed.py in embed_snippet(views, drop_defaults, state, indent, embed_url, requirejs, cors)
        266     widget_views = u'\n'.join(
        267         widget_view_template.format(view_spec=escape_script(json.dumps(view_spec)))
    --> 268         for view_spec in data['view_specs']
        269     )
        270 
    
    ~/miniconda3/lib/python3.7/site-packages/ipywidgets/embed.py in <genexpr>(.0)
        266     widget_views = u'\n'.join(
        267         widget_view_template.format(view_spec=escape_script(json.dumps(view_spec)))
    --> 268         for view_spec in data['view_specs']
        269     )
        270 
    
    ~/miniconda3/lib/python3.7/site-packages/ipywidgets/embed.py in escape_script(s)
        239     involving `<` is readable.
        240     """
    --> 241     return script_escape_re.sub(r'\u003c\1', s)
        242 
        243 @doc_subst(_doc_snippets)
    
    ~/miniconda3/lib/python3.7/re.py in _subx(pattern, template)
        307 def _subx(pattern, template):
        308     # internal: Pattern.sub/subn implementation helper
    --> 309     template = _compile_repl(template, pattern)
        310     if not template[0] and len(template[1]) == 1:
        311         # literal replacement
    
    ~/miniconda3/lib/python3.7/re.py in _compile_repl(repl, pattern)
        298 def _compile_repl(repl, pattern):
        299     # internal: compile replacement pattern
    --> 300     return sre_parse.parse_template(repl, pattern)
        301 
        302 def _expand(pattern, match, template):
    
    ~/miniconda3/lib/python3.7/sre_parse.py in parse_template(source, pattern)
       1022                 except KeyError:
       1023                     if c in ASCIILETTERS:
    -> 1024                         raise s.error('bad escape %s' % this, len(this))
       1025                 lappend(this)
       1026         else:
    
    error: bad escape \u at position 0