复制item_01并重命名为item_02

时间:2018-01-11 18:26:37

标签: python

我是Python的初学者,我正在尝试使用该语言在名为Modo的程序中创建脚本。

我正在尝试创建一个脚本,该脚本复制带有后缀编号的项目,并将新重复项目的后缀加1。

所以例如;复制'item_01',它将创建'item_01(2)',然后将'item_01(2)'重命名为'item_02'。

我很难找到如何让Python取上一个项目名称的'_01'部分,然后加1并使用它的总和作为新项目名称的后缀。

此外,这是我在这个伟大网站上的第一个问题,所以如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

我将您的问题解释为"我有一个以数字序列结尾的字符串,例如"item_02"。我希望得到一个与原始字符串形式相同的字符串,但数字加1,例如re.sub。"

您可以使用>>> import re >>> >>> s = "item_01" >>> result = re.sub( ... r"\d+$", #find all digits at the end of the string, ... lambda m: str( #replacing them with a string ... int(m.group())+1 #equal to one plus the original value, ... ).zfill(len(m.group())), #with at least as much padding as the original value. ... s ... ) >>> >>> print(result) item_02 将数字序列替换为新的数字序列:

result = re.sub(r"\d+$", lambda m: str(int(m.group())+1).zfill(len(m.group())), s)

在一行中,那将是

>>> re.sub(r"\d+$", lambda m: str(int(m.group())+1).zfill(len(m.group())), "item_99")
'item_100'

请注意,如果原始值为9,则结果字符串可能比原始字符串长:

>>> re.sub(r"\d+$", lambda m: str(int(m.group())+1).zfill(len(m.group())), "item_23_42")
'item_23_43'

它只会增加字符串最末端的数字序列,而不是任何中间序列。

>>> re.sub(r"\d+$", lambda m: str(int(m.group())+1).zfill(len(m.group())), "item_foobar")
'item_foobar'

如果字符串没有后缀数字序列,它将只返回未改变的原始值。

id myID = message["myID"];
if ([myID isKindOfClass:[NSString class]]) { ... }
else { ... }

答案 1 :(得分:0)

Getting the name out of a variable is not something you do in Python

你想在这里实现,阅读你所写的内容,

  

我尝试制作一个脚本,该脚本复制了一个带有后缀编号的项目,并将新复制项目的后缀加1。

     

所以例如;复制' item_01',它将创建' item_01(2)',然后重命名' item_01(2)'到' item_02'。

会更方便,例如下面的内容:

some_var = 1
some_other_var = some_var + 1

你可以有一个函数做"我在我收到的参数中加一个,然后返回值" !

def add_one(var):
    return (var + 1)

some_var = 1
some_other_var = add_one(some_var)

如果你想"名字"你的变量,并且能够改变它们,即使我不明白你为什么要这样做,我相信你要找的是dict

我让你看一下这个词典的参考文献。 :)