我正在用Python编写论坛。我想删除包含从右到左标记的输入和类似的东西。建议?可能是一个正则表达式?
答案 0 :(得分:1)
OP在另一个答案的难以阅读的评论中有一个例子似乎开始......:
comment = comment.encode('ascii', 'ignore')
comment = '\xc3\xa4\xc3\xb6\xc3\xbc'
当然,对于这个顺序中的两个语句,将是一个不同的错误(第一个尝试访问comment
但只有第二个绑定该名称),但我们假设这两行是互换的,如下:
comment = '\xc3\xa4\xc3\xb6\xc3\xbc'
comment = comment.encode('ascii', 'ignore')
这确实会导致OP在难以阅读的评论中出现错误,这是一个问题,原因不同:comment
是一个字节字符串(没有前导u
在开头引号之前),但.encode
适用于 unicode 字符串 - 所以Python首先尝试使用默认编解码器{{1}从该字节串中生成临时unicode那当然失败了,因为字符串中充满了非ascii字符。
在该文字中插入前导ascii
将起作用:
u
(这当然会使comment = u'\xc3\xa4\xc3\xb6\xc3\xbc'
comment = comment.encode('ascii', 'ignore')
为空,因为其所有字符都会被忽略)。或者 - 例如,如果原始字节字符串来自某个其他来源,而不是文字:
comment
这里,第二个语句用一个似乎适用于这个例子的编解码器显式构建unicode(当然只是一个猜测:你无法确定哪个编解码器应该只是看到一个裸字节串!) ),然后第三个删除所有非ascii字符(并再次将comment = '\xc3\xa4\xc3\xb6\xc3\xbc'
comment = comment.decode('latin-1')
comment = comment.encode('ascii', 'ignore')
留空)。
答案 1 :(得分:0)
如果您只想将字符限制为某个字符集的字符,则可以对该字符集中的字符串进行编码,然后忽略编码错误:
>>> uc = u'aäöüb'
>>> uc.encode('ascii', 'ignore')
'ab'
答案 2 :(得分:0)
很难猜出要从Unicode字符串中删除的字符集。可能是他们都是“Other, Format”字符吗?如果是,您可以这样做:
import unicodedata
your_unicode_string= filter(
lambda c: unicodedata.category(c) != 'Cf',
your_unicode_string)
答案 3 :(得分:0)
"example".replace(u'\u200e', '')
您可以使用.replace()
方法按十六进制值删除字符。