Hello Chris, thanks for your answer! But just kicking out all line breaks is a little harsh, since in my case the description is mostly a few lines long with 2 or 3 paragraphs. And I had the problem already solved by this procedure and the call as described in my question:
def str_replace(string, replacement_dict): > if not isinstance(string, str): > string = str(string) > pattern = re.compile('|'.join([re.escape(k) for k in > list(replacement_dict.keys())]), re.M) > return pattern.sub(lambda x: replacement_dict[x.group(0)], string) > And this solution worked very well with python 2.7, having even line breaks in link titles. Then I moved to python 3.6 and the problem was there. Thus, I think, that the XML sanitizer under Python 3.6 is the problem, since it can't handle Do you have any other ideas? Best regards Clemens On Wednesday, February 12, 2020 at 12:08:17 PM UTC+1, Christian Varas wrote: > > I had an issue with line breaks too, I remove lie breaks like this with > python 3.7 > > some_string = some_string.replace(“\n”, ””).replace(“\r”, ””) > > XML(some_string, sanitize=True) > > Cheers > Chris > > El El mié, 12 de feb. de 2020 a la(s) 04:37, Clemens < > clemens...@claret-clover.de <javascript:>> escribió: > >> Hello! >> >> In my web2py app I’m processing a list of items, where the user can click >> on a link for each item to select this. An item has an UUID, a title and a >> description. For a better orientation the item description is also >> displayed as link title. To prevent injections by and to escape tags in the >> description I’m using the XML sanitizer as follows: >> >> A(this_item.title, \ >> callback = URL('item', 'select', \ >> vars=dict(uuid=this_item.uuid), user_signature=True), \ >> _title=XML(str_replace(this_item.description, {'\r\n':' ', >> '<':'<', '>':'>'}), sanitize=True)) >> >> Using Python 2.7 everything was fine. Since I have switched to Python 3.6 >> I have the following problem. When the description contains line breaks the >> sanitizer is not working anymore. For example the following string produces >> by my str_replace routine is fine to be sanitized by the XML helper under >> Python 2.7 but not under Python 3.6: >> >> Header Line1 Line2 Line3 >>> >> >> Sanitizing line breaks escaped by is the problem with Python 3 (but >> not with Python 2). Everything else is no problem for the XML helper to >> sanitize (e.g. less than or greater than, I need these, since if there is >> no description it is generated as <no description>). >> >> How can be line breaks sanitized by the XML helper running web2py under >> Python3? >> >> Thanks for any support! >> >> Best regards Clemens >> >> >> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/web2py/319d22e0-d1be-452c-8c25-d1ec76df1a5e%40googlegroups.com >> >> <https://groups.google.com/d/msgid/web2py/319d22e0-d1be-452c-8c25-d1ec76df1a5e%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/64244a11-0964-4e44-9b75-e9d9e8d33f83%40googlegroups.com.