文本中的python函数变量

时间:2018-11-15 04:14:55

标签: python function string-concatenation

我正在尝试创建一个简单的python函数,如下所示:

def fnc_assign(y,a): 
    'new_acc_no' + y + '.text' = import_list[x][a]

我想做的就是在我调用fnc_assign(10,1)时分配new_acc_no10.text = import_list [1] [0],但是我一直坚持让函数的左手边工作(我收到一个SyntaxError:无法分配给运算符)。

感谢您的帮助!

编辑: 如下所述,new_acc_no1具有.text属性,该属性= import_list [x] [0]。

我有很多new_acc_no,所以我一直在做的是:

new_acc_no1.text = import_list[x][0]
new_acc_no2.text = import_list[x][1]
new_acc_no3.text = import_list[x][2]
new_acc_no4.text = import_list[x][12]
new_acc_no5.text = import_list[x][13]

我还有很多需要补充的地方,所以我认为编写一个可以写出new_acc_noY.text = import_list [x] [a]的函数将是有益的,因为x是while循环中的变量,之前的代码块在其中。因此该函数将为fnc_assign(1,2),它将生成输出:

new_acc_no1.text = import_list[x][2]

在x仍从循环中输入其变量输入的情况下。这可能吗?

2 个答案:

答案 0 :(得分:0)

应该是

def fnc_assign(y,x): 
    import_list[x][0] = 'new_acc_no' + y + '.text'

请注意,您的LHS是字符串,Python中的字符串是不可变的,即无法更改。我了解您的意图是将结果字符串分配给您放入RHS的相关数组元素。只需反转它们即可完成分配。

还是要真正拥有一个名为new_acc_no10.text的变量并在导入列表中为其分配值?

更新

这还假设y是一个字符串(或支持使用+运算符与字符串连接),否则请使用str(y)


新任务更新

您在问题中的代码(假设x中的外部循环

for x in someValueIterator:
    new_acc_no1.text = import_list[x][0]
    new_acc_no2.text = import_list[x][1]
    new_acc_no3.text = import_list[x][2]
    new_acc_no4.text = import_list[x][12]
    new_acc_no5.text = import_list[x][13]

似乎建议采用以下方法。将帐号整理到一个字典中,该字典由您要分配的RHS索引索引,例如

acc_nos = [new_acc_no1, new_acc_no2, new_acc_no3, new_acc_no4, new_acc_no5]
indices = [0,1,2,12,13]
idx2acc = dict(zip(indices, acc_nos))

现在像这样循环:

for index, acc_no in idx2acc.iteritems():
    acc_no.text = import_list[x][index]

,并考虑到x中的外部循环,而不是

for x in someValueIterator:
    for index, acc_no in idx2acc.iteritems():
        acc_no.text = import_list[x][index]

考虑直接像这样循环:

for current_list in import_list:
    for index, acc_no in idx2acc.iteritems():
        acc_no.text = current_list[index]

答案 1 :(得分:0)

将y更改为str(y)

def fnc_assign(y,x): 
    import_list[x][0] = 'new_acc_no' + str(y) + '.text'

编辑:

您不能将int添加到str。