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

时间:2015-03-26 05:34:27

标签: python regex string search range

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

并使用re.search(regex,string)获取字符串中子字符串的“第一个索引”。但是,这个函数返回匹配对象:(

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

示例:

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

结果:

>>> 5

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

2 个答案:

答案 0 :(得分:5)

如果您想使用此2功能,请使用re.search中的第一组find

>>> 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

答案 1 :(得分:2)

" 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