剥离非ascii字符的多行字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剥离非ascii字符的多行字符串相关的知识,希望对你有一定的参考价值。
我想在IDLE中将一个字符串放入shell中。它包含一些我想删除的非ascii字符。我不能只将它粘贴到多行字符串中,例如
u'''✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
因为这会给我以下错误:
Unsupported characters in input
而我无法使用
string = [raw_]input()
因为字符串超过一行宽。
如何将字符串放入shell?
答案
如果你不能像这样定义一个string
(在你的机器上),那么你将需要input
它。这意味着你需要一些代码来接受multi-line
输入,当你读取每一行时,检查每个字符的ord()
是否小于256
(即它在ASCII
set中)。
这是代码:
inpt = ''.join(c for c in input() if ord(c) < 256)
while True:
s = ''.join(c for c in input() if ord(c) < 256)
if s:
inpt += "
" + s
else:
break
这工作:
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan
>>> inpt
'uganda
zambia
zimbabwe
and none of these
afghanistan
armenia
azerbaijan'
>>> print(inpt)
uganda
zambia
zimbabwe
and none of these
afghanistan
armenia
azerbaijan
另一答案
如果您的会话中存储了数据并且不能只执行脚本,那么您可以运行一个输入循环来复制完整的输入。
码:
inp = ""
for line in iter(input, “”):
inp += line
另一答案
在脚本中定义它。文件,新,然后:
#!coding:utf8
s = u'''✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
print s
保存它,然后按F5在IDLE shell中运行它。输出:
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan
或者,切换到最新的Python。 3.6的空闲工作正常:
>>> s='''
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
>>> print(s)
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan
以上是关于剥离非ascii字符的多行字符串的主要内容,如果未能解决你的问题,请参考以下文章
运行 Python 代码中的“SyntaxError:非 ASCII 字符”
SyntaxError: 非 ASCII 字符 '\xd1'