@@ -1647,8 +1647,9 @@ class Helper:
1647
1647
}
1648
1648
# Either add symbols to this dictionary or to the symbols dictionary
1649
1649
# directly: Whichever is easier. They are merged later.
1650
+ _strprefixes = tuple (p + q for p in ('b' , 'r' , 'u' ) for q in ("'" , '"' ))
1650
1651
_symbols_inverse = {
1651
- 'STRINGS' : ("'" , "'''" , "r'" , "u'" , '"""' , '"' , 'r"' , 'u"' ) ,
1652
+ 'STRINGS' : ("'" , "'''" , '"""' , '"' ) + _strprefixes ,
1652
1653
'OPERATORS' : ('+' , '-' , '*' , '**' , '/' , '//' , '%' , '<<' , '>>' , '&' ,
1653
1654
'|' , '^' , '~' , '<' , '>' , '<=' , '>=' , '==' , '!=' , '<>' ),
1654
1655
'COMPARISON' : ('<' , '>' , '<=' , '>=' , '==' , '!=' , '<>' ),
@@ -1811,7 +1812,12 @@ def interact(self):
1811
1812
if not request : break
1812
1813
except (KeyboardInterrupt , EOFError ):
1813
1814
break
1814
- request = strip (replace (request , '"' , '' , "'" , '' ))
1815
+ request = strip (request )
1816
+ # Make sure significant trailing quotation marks of literals don't
1817
+ # get deleted while cleaning input
1818
+ if (len (request ) > 2 and request [0 ] == request [- 1 ] in ("'" , '"' )
1819
+ and request [0 ] not in request [1 :- 1 ]):
1820
+ request = request [1 :- 1 ]
1815
1821
if lower (request ) in ('q' , 'quit' ): break
1816
1822
self .help (request )
1817
1823
0 commit comments