Python: Удалять символ только из конца строки, если символ = "/" - PullRequest
0 голосов
/ 28 мая 2020

Я добавляю разные значения к переменным Houdini с помощью Python.

Некоторые из этих переменных представляют собой пути к файлам и заканчиваются "/" - другие - просто имена и не заканчиваются "/" .

В моем текущем коде я использую [:-1] для удаления последнего символа пути к файлу, поэтому у меня нет "/". Проблема в том, что если я добавлю значение типа "Var_ABC", результат будет "Var_AB", поскольку он также удалит последний символ.

Как я могу удалить последний символ, только если последний символ является "/"?

Вот что у меня есть и пока работает:

def set_vars():   

count = hou.evalParm('vars_names')
user_name = hou.evalParm('user_name')

for idx in range( 1,count+1):
    output = hou.evalParm('vars_' + str(idx))
    vars_path_out = hou.evalParm('vars_path_' + str(idx))
    vars_path = vars_path_out[:-1]

    hou.hscript("setenv -g " + output + "=" + vars_path)

    final_vars = hou.hscript("setenv -g " + output + "=" + vars_path)

    hou.ui.displayMessage(user_name +", " + "all variables are set.")

Спасибо

Ответы [ 3 ]

3 голосов
/ 28 мая 2020

Используйте метод endswith, чтобы проверить, заканчивается ли он на /

if vars_path_out.endswith('/')

Или просто проверьте последний символ:

if vars_path_out[-1] == '/'

Вот так:

vars_path = vars_path_out[:-1] if vars_path_out.endswith('/') else vars_path_out

Или вот так:

if vars_path_out.endswith('\'):
  vars_path = vars_path_out[:-1]
else:
  vars_path = vars_path_out

иначе rstrip метод:

vars_path = vars_path_out.rstrip('/')
0 голосов
/ 28 мая 2020

Как упоминалось в комментариях @jasonharper, вам, вероятно, следует использовать здесь rstrip. Он встроен, и IMO более читабелен, чем условный однострочный:

vars_path_out.rstrip('/')

Это удалит те строки, которые заканчиваются на /, и вернутся без этого окончания. В противном случае он вернет вашу строку как есть.

0 голосов
/ 28 мая 2020

Попробуйте это в своем коде:

vars_path_out = hou.evalParm('vars_path_' + str(idx))
if vars_path_out[-1] == '/':
 vars_path = vars_path_out[:-1]

или

на основе комментария jasonharper

vars_path = vars_path_out.rstrip('/')

Это намного лучше первого

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