带非ascii字符的多行字符串

2024-05-15 03:09:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把一根绳子放进空壳里。它包含一些我想删除的非ascii字符。我不能把它粘贴到一个多行字符串中

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

因为这会给我以下错误:

Unsupported characters in input

我不能用

string = [raw_]input()

因为字符串不止一行宽。你知道吗


我怎样才能把绳子插进壳里?你知道吗


Tags: andof字符串noneinput粘贴ascii字符
3条回答

在脚本中定义它。文件,新建,然后:

#!coding:utf8
s = u'''✔uganda
✔zambia
✔zimbabwe
and none of these…
✕afghanistan
✕armenia
✕azerbaijan'''
print s

保存它,然后按F5在空闲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

如果会话中存储了数据,并且不能执行脚本,那么可以运行一个输入循环来复制完整的输入。你知道吗

代码:

inp = ""


for line in iter(input, “”):
        inp += line

如果您不能定义这样的string(在您的机器上),那么您将需要input它。这意味着您需要一些代码来接受multi-line输入,并且在读取每一行时,检查每个字符的ord()是否小于256(即,它在ASCII集中)。你知道吗

下面是代码:

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

相关问题 更多 >

    热门问题