问题描述
list = re.sub("[^\w]"," ",'text hier einfügen').split()
列表的输出为:
['text','hier','einfügen']
# -*- coding: iso-8859-1 -*-
...它不再起作用。输出变为:
['text','hier','einf','gen']
如何避免这种情况?我需要这种iso编码,因为在HTML中,否则将无法正确打印德语文本。
其他信息(更多详细信息):
我有这样的表格:
<form action="text_ch.py" method="post" name="search"><textarea cols="50" name="comment" rows="10">Text hier einfügen...</textarea>
<input type="submit" value="Analyse"><p></p>
</form>
然后是python文件:
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import cgi
import re
form = cgi.FieldStorage()
user_text = form.getvalue('comment')
user_text_output = user_text
wordList = re.sub("[^\w]",user_text).split()
wordList = [x.lower() for x in wordList]
# HTML Ausgabe
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Title</title>'
print '<Meta charset=\"utf-8\"/>'
print '</head>'
print '<body>'
print '<div style=\"width: 40%; margin: auto; border: 1px solid #333;Box-shadow: 8px 8px 5px #444;padding: 8px 12px; font-family: Arial,Helvetica,sans-serif; font-size:medium; line-height:1.5;\">'
print wordList
print "</div>"
print '</body>'
print '</html>'
HMTL中的输出为:
['text','hier','einf','gen']
解决方法
不要使用[^\w]
(任何空白字符),而应使用[\s]
(任何空白字符)。
此外,使用方法re.split()
代替re.sub().split()
。这样就更简单了。
import re
lst = re.split("[\s]",'text hier einfügen')
['text','hier','einfügen']
如果您担心捕获<
,>
,/
等命令字符,那么仅在正则表达式中手动列出它们可能是最简单的-只有一个ASCII内的有效HTML控制字符的数量有限。