在python中的匹配对象中查找字符串
我想在python中的match对象中查找字符串,但是.find不起作用。以下是我的片段:在python中的匹配对象中查找字符串,python,string,find,match,Python,String,Find,Match,我想在python中的match对象中查找字符串,但是.find不起作用。以下是我的片段: e_list = [] for file in os.listdir('.'): r = re.compile(r".*\.(aaa|bbb)$") e_found = r.search(file) if e_found is not None: e_list.append(e_found.group(0)) e_length = len(e_list); fo
e_list = []
for file in os.listdir('.'):
r = re.compile(r".*\.(aaa|bbb)$")
e_found = r.search(file)
if e_found is not None:
e_list.append(e_found.group(0))
e_length = len(e_list);
for num_e in range(e_length):
if(e_list[num_e].group(0).find('50M') > 0)
print(e_list[num_e].group(0))
。。。现在e_列表如下所示:
当e_列表[0].group0返回“30M.aaa”时,无法应用.find,因为它是匹配对象。那么,我该怎么办呢?要检查字符串是否以“50M”开头,请使用str.startswith“50M”。这不会检测50M为后缀测试的情况。50M 如果后缀是查找50M的合法位置,那么使用in比.find'50M'>0更简洁
要检查字符串是否以“50M”开头,请使用str.startswith“50M”。这不会检测50M为后缀测试的情况。50M 如果后缀是查找50M的合法位置,那么使用in比.find'50M'>0更简洁
我认为Python不是你的第一语言,你的代码闻起来像Java 请不要使用re.compile,因为它是不必要的。只需使用re.search或re.findall 在Python中,您只需使用:
result = re.findall('.*\.(aaa|bbb)$', file)
然后,结果是一个列表,您可以打印它或用于。。。循环以获取其中的每一项
您也可以使用:
result = re.search('.*\.(aaa|bbb)$', file)
结果是一组
然后,您应该使用result.group1获取匹配项的结果
因此,您的代码可以是:
e_list = []
for file in os.listdir('.'):
e_found = re.search(".*\.(aaa|bbb)$", file)
if e_found:
e_list.append(e_found.group(1))
for item in e_list:
if item.find('50M') > 0
print(item)
我认为Python不是你的第一语言,你的代码闻起来像Java 请不要使用re.compile,因为它是不必要的。只需使用re.search或re.findall 在Python中,您只需使用:
result = re.findall('.*\.(aaa|bbb)$', file)
然后,结果是一个列表,您可以打印它或用于。。。循环以获取其中的每一项
您也可以使用:
result = re.search('.*\.(aaa|bbb)$', file)
结果是一组
然后,您应该使用result.group1获取匹配项的结果
因此,您的代码可以是:
e_list = []
for file in os.listdir('.'):
e_found = re.search(".*\.(aaa|bbb)$", file)
if e_found:
e_list.append(e_found.group(1))
for item in e_list:
if item.find('50M') > 0
print(item)
进一步阅读:Python3。您应该将其用于正则表达式,以防止反斜杠和字符串与regex元字符的奇怪交互:r.*\.aaa | bbb$。尽管这个正则表达式不需要它,但现在就开始养成这个习惯会让你以后不会头疼。对@Kevin J.Chase来说:哦,我以为我已经在正则表达式前面加了一个“r”,但它不见了。感谢您提醒我。为了进一步阅读:Python 3。您应该将其用于正则表达式,以防止与反斜杠和字符串与regex元字符的奇怪交互:r.*\.aaa | bbb$。尽管这个正则表达式不需要它,但现在就开始养成这个习惯会让你以后不会头疼。对@Kevin J.Chase来说:哦,我以为我已经在正则表达式前面加了一个“r”,但它不见了。谢谢你提醒我,没用。读了Kingname的答案后,我注意到最后一部分应该是:ife_list[num_e].find'50M'>0:printe_list[num_e]@IanHacker啊,我明白了。我已经更新了我的答案,使之正确-我所描述的方法将比.find.It更清晰、更具体。读了Kingname的答案后,我注意到最后一部分应该是:ife_list[num_e].find'50M'>0:printe_list[num_e]@IanHacker啊,我明白了。我已经更新了我的答案,使之正确-我描述的方法将比你的答案更清晰、更具体。实际上,e_list.appende_found.group0提供了我想要的整个文件名。除此之外,我完全复制了你的,而且效果很好。也感谢您纠正我的迭代。由您的答案解决。实际上,e_list.appende_found.group0提供了我想要的整个文件名。除此之外,我完全复制了你的,而且效果很好。还感谢您纠正我的迭代。
e_list = []
for file in os.listdir('.'):
e_found = re.search(".*\.(aaa|bbb)$", file)
if e_found:
e_list.append(e_found.group(1))
for item in e_list:
if item.find('50M') > 0
print(item)