我想在IDLE中将一个字符串放入shell中。它包含一些我想删除的非ascii字符。我不能只将它粘贴到多行字符串中,例如
u'''✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
因为这会给我以下错误:
Unsupported characters in input
我无法使用
string = [raw_]input()
因为字符串超过一行。
如何将字符串输入shell?
答案 0 :(得分:0)
如果你无法在你的机器上定义string
这样的input
,那么你需要multi-line
它。这意味着您需要一些代码来接受ord()
输入,当您阅读每一行时,请检查每个字符的256
是否小于ASCII
(即它位于{{1} }}设定)。
以下是代码:
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 += "\n" + s
else:
break
这有效:
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan
>>> inpt
'uganda\nzambia\nzimbabwe\nand none of these\nafghanistan\narmenia\nazerbaijan'
>>> print(inpt)
uganda
zambia
zimbabwe
and none of these
afghanistan
armenia
azerbaijan
答案 1 :(得分:0)
如果您的会话中存储了数据并且不能只执行脚本,那么您可以运行一个输入循环来复制完整的输入。
代码:
inp = ""
for line in iter(input, “”):
inp += line
答案 2 :(得分:0)
在脚本中定义它。文件,新,然后:
#!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&#39; s空闲工作正常:
>>> s='''\
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
>>> print(s)
✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan