Python:如果字符 = "/",则仅从字符串末尾删除字符



我用Python向Houdini变量添加不同的值。

其中一些变量是文件路径,并以"/"结尾 - 其他变量只是名称,不以"/"结尾。

在我当前的代码中,我使用[:-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.")

谢谢

正如@jasonharper评论中提到的,您可能应该在此处使用rstrip。它是内置的,IMO 比连续的单行代码更具可读性:

vars_path_out.rstrip('/')

这将去除那些以/结尾的字符串,并在没有该结尾的情况下返回。否则,它将按原样返回您的字符串。

在你的代码中试试这个:

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

根据杰森哈珀的评论

vars_path = vars_path_out.rstrip('/')

这比第一个好多了

使用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('/')

最新更新