剥离非ascii字符的多行字符串

时间:2017-12-17 15:50:21

标签: python string unicode

我想在IDLE中将一个字符串放入shell中。它包含一些我想删除的非ascii字符。我不能只将它粘贴到多行字符串中,例如

u'''✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''

因为这会给我以下错误:

Unsupported characters in input

我无法使用

string = [raw_]input()

因为字符串超过一行。

如何将字符串输入shell?

3 个答案:

答案 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