如何在python字符串中查找非ASCII字符的索引?
Python有string.find()和string.rfind()来获取字符串中子字符串的索引 并重新搜索(regex,string)以获取字符串中子字符串的“第一个索引”。但是,此函数是返回匹配对象:( 所以我想,合并这两个函数。通过正则表达式检查字符串并返回第一个索引。(索引与对象类型不匹配:b) 例如:如何在python字符串中查找非ASCII字符的索引?,python,regex,string,search,range,Python,Regex,String,Search,Range,Python有string.find()和string.rfind()来获取字符串中子字符串的索引 并重新搜索(regex,string)以获取字符串中子字符串的“第一个索引”。但是,此函数是返回匹配对象:( 所以我想,合并这两个函数。通过正则表达式检查字符串并返回第一个索引。(索引与对象类型不匹配:b) 例如: string = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ" print custom(string) 结果: >>> 5 非ASCII范围为
string = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ"
print custom(string)
结果:
>>> 5
非ASCII范围为[^\x20-\x7E],如何实现此函数???如果要使用此2函数,请在
查找中使用第一组重新搜索:
>>> g = "abcdeÿÿaaaabbbÿÿcccdddÿÿeeeÿÿ"
>>> import re
>>> g.find(re.search(r'[^\x20-\x7E]',g).group(0))
5
但是,如果您只想查找索引re.search
具有返回匹配字符串索引的start
方法:
>>> 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”有一个可以使用的方法:
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