2024-10-03 13:24:23 发布
网友
我想得到字符串中第一个不可打印字符的索引,这样我就可以用一个新字符替换它。在
例如: indexNonPrintable("Hell[nonprintable] World!") = 4
indexNonPrintable("Hell[nonprintable] World!") = 4
如果可能的话,我想用python进行优化,否则我可以这样做:
i = 0 for c in str: if (c not in string.printable) return i i = i + 1
为了搞笑,只有一句话:
def indexNonPrintable(s): return next(i for i, x in enumerate(s) if x not in string.printable)
如果不存在不可打印字符,则该版本将引发StopIteration;您可以将其更改为:
StopIteration
在失败时返回None(或使用-1来表现为str.find),或:
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并引发{}。在
str.index
我会用一个正则表达式。类似这样的方法可能会奏效:
import re import string match = re.search('[^' + re.escape(string.printable) + ']', str) if match: return match.start()
您可以使用ord(c)将每个字符转换为ascii。在
ord(c)
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中字符的整数值
为了搞笑,只有一句话:
如果不存在不可打印字符,则该版本将引发
^{pr2}$StopIteration
;您可以将其更改为:在失败时返回
None
(或使用-1
来表现为str.find
),或:当找不到匹配字符时,像}。在
str.index
并引发{我会用一个正则表达式。类似这样的方法可能会奏效:
您可以使用
ord(c)
将每个字符转换为ascii。在其中x和y是Table of ascii values中字符的整数值
相关问题 更多 >
编程相关推荐