Проверьте, присутствует ли подстрока в указанном c месте в строке - PullRequest
1 голос
/ 23 января 2020

Я пытаюсь отсортировать файлы в базе данных по имени файла. Имя файла состоит из символов и цифр, например, M23GH04.wav. 2-я и 3-я буква, т.е. 23 - это информация о классе, которую я хочу использовать. Есть ли способ забрать все файлы, имеющие 23 только во 2-й и 3-й позиции.

Я пробовал:

spk_id ='23'

spk_files=[f for f in wav_files if spk_id in f]

, это дает все файлы независимо от позиции '23'. например, M01TY23, что нежелательно. Любой обходной путь для этого?

Ответы [ 3 ]

3 голосов
/ 23 января 2020

Попробуйте использовать понимание списка с нарезкой:

spk_files = [f for f in wav_files if f[1:3] == spk_id]

Используйте то же понимание списка, но просто измените spk_id in f на f[1:3] == spk_id, этот код заставляет его извлекать только 2-й и 3-й символы имя файла, а затем проверьте, равняется ли оно '23', переменной spk_id.

2 голосов
/ 23 января 2020

Вы также можете использовать re.match здесь:

spk_files = [file for file in wav_files if re.match(r'^.23', file)]
0 голосов
/ 23 января 2020

Попробуйте следующее.

spk_files=[f for f in wav_files if spk_id == f[1:3]]

Это будет соответствовать указанным c индексам с подстрокой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...