我有几个像这样的字符串:
s = u'awëerwq\u0645\u0631\u062d\u0628\u0627\u043c\u0438\u0440bròn 1990 23x4 + &23 \'we\' we\'s mexicqué'
s
"awëerwq مرحباмир bròn 1990 23x4 + &23 'we' we's mexicqué"
我找不到一种方法来去除非可打印的字符,比如 'مرحباми',但保留拉丁字符,比如 'óé, ...'。在我的情况下,数字(比如 '1990')也是不想要的。我已经使用了 re
的 ASCII
标志,但我不知道它的问题在哪里,因为它删除了 'óëé,...'。使用 string.printable
也遇到了同样的问题。
ord('ë')
235
鉴于ASCII表被分配了137,我期望的结果应该是这样的:
x = some_method(s)
"awëerwq bròn 23x4 we we s mexicqué"
接下来,我希望能够在编码时不依赖于未固定的编码方式。
ord(c) < 256
的字符,但是排除像+
和'
这样的字符。最好使用硬编码字符串包含所有你想保留的字符,然后只需执行''.join(c for c in s if c in okay_chars)
。 - TigerhawkT3ë
的Unicode值为235。在代码页437中,它的值为137。 - ayane_m23x4
是怎么通过的呢? - TigerhawkT3