获取Python中第一个不可打印字符的索引

2024-10-03 13:24:23 发布

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

我想得到字符串中第一个不可打印字符的索引,这样我就可以用一个新字符替换它。在

例如: indexNonPrintable("Hell[nonprintable] World!") = 4

如果可能的话,我想用python进行优化,否则我可以这样做:

i = 0    
for c in str:
   if (c not in string.printable)
      return i
   i = i + 1

Tags: 字符串inforworldstringreturnifnot
3条回答

为了搞笑,只有一句话:

def indexNonPrintable(s):
    return next(i for i, x in enumerate(s) if x not in string.printable)

如果不存在不可打印字符,则该版本将引发StopIteration;您可以将其更改为:

^{pr2}$

在失败时返回None(或使用-1来表现为str.find),或:

    try:
        return next(i for i, x in enumerate(s) if x not in string.printable)
    except StopIteration:
        raise ValueError("No non-printable characters found")

当找不到匹配字符时,像str.index并引发{}。在

我会用一个正则表达式。类似这样的方法可能会奏效:

import re
import string

match = re.search('[^' + re.escape(string.printable) + ']', str)
if match:
    return match.start()

您可以使用ord(c)将每个字符转换为ascii。在

i = 0    
for c in str:
   ascii_c = ord(c)
   if ascii in range(x,y)
      return i
   i = i + 1

其中x和y是Table of ascii values中字符的整数值

相关问题 更多 >