Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除python中的下标/上标_Python - Fatal编程技术网

如何删除python中的下标/上标

如何删除python中的下标/上标,python,Python,我有一些字符串使用下标和上标 在保留我的字符串的同时,我是否可以删除它们 以下是一个示例,1º,除非另有说明。我如何删除的上标º 提前谢谢 ASCII字符的顺序值(下标/上标字符不在ASCII中)在范围(128)内。请注意,range(128)排除了范围的上限(如果未提供下限,则假定0为下限),因此这将映射到0-127之间的所有数字。因此,您可以去掉不在此范围内的任何字符: >>> x = '¹ºUnless otherwise indicated' >>>

我有一些字符串使用下标和上标

在保留我的字符串的同时,我是否可以删除它们

以下是一个示例,
1º,除非另有说明
。我如何删除
的上标º


提前谢谢

ASCII字符的顺序值(下标/上标字符不在ASCII中)在
范围(128)
内。请注意,
range(128)
排除了范围的上限(如果未提供下限,则假定0为下限),因此这将映射到0-127之间的所有数字。因此,您可以去掉不在此范围内的任何字符:

>>> x = '¹ºUnless otherwise indicated'
>>> y = ''.join([i for i in x if ord(i) < 128])
>>> y
'Unless otherwise indicated'
除非另有说明,否则x='1º' >>>y=''.join([i表示x中的i,如果ord(i)<128]) >>>y “除非另有说明”
这将迭代
x
的所有字符,排除任何不在ASCII范围内的字符,然后将生成的
字符列表
连接回
str
ASCII字符的顺序值(下标/上标字符不在ASCII中)在
范围(128)
内。请注意,
range(128)
排除了范围的上限(如果未提供下限,则假定0为下限),因此这将映射到0-127之间的所有数字。因此,您可以去掉不在此范围内的任何字符:

>>> x = '¹ºUnless otherwise indicated'
>>> y = ''.join([i for i in x if ord(i) < 128])
>>> y
'Unless otherwise indicated'
除非另有说明,否则x='1º' >>>y=''.join([i表示x中的i,如果ord(i)<128]) >>>y “除非另有说明”
这将迭代
x
的所有字符,排除任何不在ASCII范围内的字符,然后将生成的
列表
中的字符连接回一个
str

唯一可靠的方法是枚举可能出现的所有上标和下标符号,并删除与此集合匹配的字符

如果您的字符串没有那么奇怪,您可以尝试识别“字母其他”和“数字其他”类别,这将包括除超级和下标之外的其他字符。例如:

import unicodedata
s = "¹ºUnless otherwise indicated"
cleaned = "".join(c for c in s if unicodedata.category(c) not in ["No", "Lo"])

唯一可靠的方法是枚举可能出现的所有上标和下标符号,并删除与此集合匹配的字符

如果您的字符串没有那么奇怪,您可以尝试识别“字母其他”和“数字其他”类别,这将包括除超级和下标之外的其他字符。例如:

import unicodedata
s = "¹ºUnless otherwise indicated"
cleaned = "".join(c for c in s if unicodedata.category(c) not in ["No", "Lo"])

当你说“删除上标”时,你的意思是完全从字符串中删除这些字符,还是希望以某种方式取消上标字符?我的意思是完全从字符串中删除这些字符。将最终输出设置为“除非另有说明”。当您说“删除上标”时,您的意思是完全从字符串中删除这些字符,还是希望以某种方式取消上标字符?我的意思是完全从字符串中删除这些字符。将最终输出设置为“除非另有说明”。
str.join
实际上会从输入中生成一个列表(找出输入中的最高代码点并预先分配结果),因此使用生成器不会节省时间或内存。@user2357112supportsMonica从不知道这一点。这就是我建议改变的原因。我肯定会调查的。感谢您指出。事实上,使用生成器是与
str.join一起使用的。有趣的是,我想最好推荐另一个版本。感谢您提供的信息
str.join
实际上会从输入中生成一个列表(以计算出输入中的最高代码点并预先分配结果),因此使用生成器不会节省时间或内存。@user2357112supportsMonica从不知道这一点。这就是我建议改变的原因。我肯定会调查的。感谢您指出。事实上,使用生成器是与
str.join一起使用的。有趣的是,我想最好推荐另一个版本。谢谢你的信息