Heya
Wow now that was really easy...
So this is sorted and I can move on :D
Last tiny question tho... how can I remove multiple parts of the name? Just
for the future...
list = cmds.ls('*_set*')
for objects in list:
new_fn = "_".join(objects.split("_")[:-1-2])
print new_fn
?? somehow it dont work :s neither if I put -1,-2 or in separate []....
Thanks again !
On Tuesday, 30 October 2012 12:19:06 UTC, matthew evans wrote:
>
> if you simply want to "remove" the last part of the name try:
>
> list = cmds.ls('*_set*')
> for objects in list:
> new_fn = "_".join(object.split("_")[:-1])
> print new_fn
>
> On Tue, Oct 30, 2012 at 12:07 PM, Daz <[email protected] <javascript:>>wrote:
>
>> Heya
>>
>> Aaa right ! Thats explains a lot !
>>
>> So I can reformat them and put back together any way I want. Now that
>> sort of works but I hit a wall if some of the names has xx_xx_xx_xx and
>> some are xx_xx_xx. Then I get error....
>>
>> Here is basic script
>> list = cmds.ls('*_set*')
>>
>> for objects in list:
>> t = objects.split('_')
>> new_fn = "{0}_{1}_{2}_{3}".format(t[-0],t[-2],t[-3],t[-4])
>> print new_fn
>>
>> and here is error
>>
>> # Error: list index out of range
>> # Traceback (most recent call last):
>> # File "<maya console>", line 5, in <module>
>> # IndexError: list index out of range #
>>
>> I guess its because names have different length...
>>
>> I try using Try/except:pass but then it just loop again and add 1st part
>> to the end so that wont work whh...
>>
>> Any hints how to just subtract/delete the last part of name?
>>
>>
>> On Tuesday, 30 October 2012 11:49:01 UTC, Anthony Tan wrote:
>>>
>>> With your format() call, you need a string format specifier to tell it
>>> how to use the arguments you've supplied it..for example, in the working
>>> script one, the format specifier is the string "{0}_JY_{1}"
>>>
>>> If you did a straight print on this, you'd get literally "{0}_JY_{1}",
>>> but since you're invoking format() against it, it'll go through and replace
>>> the {0} with the first argument in format() and {1} with the 2nd argument,
>>> and so on and so on. The { } are markers for where format() should be
>>> inserting values. Your loop currently is calling format(t[0], t[1]) against
>>> a string that doesn't contain any of the { }'s so it's not doing anything,
>>> and the result is that new_fn is the same as objects
>>>
>>> Is this more what you're after?
>>>
>>> list = cmds.ls('*_set*')
>>>
>>> for objects in list:
>>>
>>> # t = cmds.ls(objects)[0].split('_')[-1]
>>>
>>> # no need to call cmds.ls again to select anything, you've
>>>
>>> # already got the name with the first cmds.ls('*_set*') call
>>>
>>> t = objects.split('_')[-1]
>>>
>>>
>>> # new_fn = objects.format( t[0], t[1] )
>>> # apply a new prefix to the setXYZ suffix
>>>
>>> new_fn = "aNewPrefix_{0}".format(t)
>>>
>>>
>>>
>>> On Tuesday, October 30, 2012 7:09:07 PM UTC+8, Daz wrote:
>>>>
>>>> Heya
>>>>
>>>> I'm battling with a part of my script... I want to cmds.ls certain
>>>> items and then remove part of their name. After that I want the resulting
>>>> name to be used for next part of the script. The wall I hit is with
>>>> .format
>>>> string... I got an working example but somehow it makes no sense to me
>>>> whh... anyway have a look, if any1 could push me to the right direction
>>>> that would be great ! I should be able to pick it up after hehe :)
>>>>
>>>>
>>>> Here is example of working script:
>>>>
>>>> fn = "LN0001_07272010_3.dat".split('_')
>>>> new_fn = '{0}_JY_{1}'.format(fn[0], fn[1])
>>>> print new_fn
>>>>
>>>> but he uses premade name...
>>>>
>>>> and here is my try
>>>>
>>>> list = cmds.ls('*_set*')
>>>> for objects in list:
>>>> t = cmds.ls(objects)[0].split('_')[-1]
>>>> new_fn = objects.format( t[0], t[1] )
>>>> print new_fn
>>>>
>>>> I just want to be able to remove _set and use the new name to select
>>>> nodes and run next script...
>>>>
>>>> Thanks in advance! :)
>>>>
>>> --
>> view archives: http://groups.google.com/group/python_inside_maya
>> change your subscription settings:
>> http://groups.google.com/group/python_inside_maya/subscribe
>>
>
>
--
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings:
http://groups.google.com/group/python_inside_maya/subscribe