Если утверждение основано на части строки в Python - PullRequest
0 голосов
/ 25 января 2019

Я изучаю Python, и у меня проблема с оператором if, основанным на части строки. Я ищу ответ, но не нашел ничего полезного.

У меня есть список из нескольких (15) имен, сгруппированных в 3 подгруппы:

'axxxxxxxx_44'
'bxxxxxxxx_22'
'cxxxxxxxx_2'

Я создал несколько методов для редактирования этих файлов, и теперь я помещаю их в цикл for. Для каждого отредактированного подгруппы создается отдельный каталог, и мне нужно поставить результат зависит от _xx.

Как я могу это сделать с помощью оператора if?

Теперь все мои файлы создаются в одном и том же главном каталоге.

Код например:

try:
    for i in range(0, len(dir_names)):
        os.mkdir(dir_names[i])
except FileExistsError:
    print("Directory ", dir_names[i], " already exists")

for x in range(0, len(file_names)):
    fileName = '{}'.format(file_names[x])
# here I need (I know how to change dir but problem with if on string):
# if string is ended by _44 change working directory on directory named _44
# else if _22 change working directory on directory named _22
# else _02 to _02
    fileIn = fileName + "{}".format('')
    fileFixed = fileName + "{}{}".format('_out', '.txt')
    fileFinalCSV = fileName + "{}{}".format('_out', '.csv')

1 Ответ

0 голосов
/ 25 января 2019

Есть несколько способов сделать это.

  1. Проверьте строку напрямую:

    if dir_name == 'axxxxxxxx_44'
    

    или

    if '_44' in dir_name
    
  2. Использование str.endswith () :

    if dir_name.endswith('_22')
    
  3. Использование str.split () :

    if dir_name.split('_')[1] == '44'
    

Существует практически неограниченное количество опций, и в зависимости от вашей конкретной ситуации, тот, который вы должны использовать, будет различным. Для этого примера я бы использовал вариант 2.

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