我如何在 python 字符串中找到非 ASCII 字符的索引?

how can i finding the index of non-ASCII character in python string?

Python 有 string.find() 和 string.rfind() 来获取字符串中子字符串的索引。

和re.search(regex,string) 得到字符串中子串的'first index'。但是,这个函数是 return 来匹配对象 :(

所以我想知道,合并这两个函数。通过正则表达式检查字符串和 return 第一个索引。 (索引不匹配对象类型:b)

示例:

string = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ"
print custom(string)

结果:

>>> 5

非ASCII范围是[^\x20-\x7E],如何实现这个功能??

如果要使用这 2 个功能,请使用 find 中的第一组 re.search :

>>> g = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ"
>>> import re
>>> g.find(re.search(r'[^\x20-\x7E]',g).group(0))
5

但是如果你只想找到索引 re.searchstart 方法 return 匹配字符串的索引 :

>>> re.search(r'[^\x20-\x7E]',g).start()
5 

你也可以不用正则表达式来做:

>>> import string
>>> next(i for i,j in enumerate(g) if j not in string.ascii_letters)
5

"MatchObjects" 有一个 start 方法可以使用:

import re

def custom(s):
    mat = re.search(r'[^\x20-\x7E]', s)
    if mat: return mat.start()
    return -1  # ?? match failed

string = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ"
print(custom(string))  # 5