Python没有替换列表中的值

时间:2017-08-08 17:31:55

标签: python list

我正在尝试编辑列表中的值,因此我可以将此列表与我在程序中其他位置的列表类似。

我从文档中获取了一个值列表,并希望转向"关闭"进入"否"和"开"进入"是",""进入" Null"等等

但是,以下代码由于某种原因不能替换这些值:

counter = 0
while counter < len(value_list)-1:
    if str(value_list[counter]) in ("", " ", "N/A"):
        value_list[counter] = "Null"
    elif str(value_list[counter]) == "Off":
        value_list[counter] = "No"
    elif str(value_list[counter]) == "On":
        value_list[counter] = "Yes"
    counter += 1
    print counter, value_list[counter]

我的输出是(我只是剪了一下,因为它有数百行):

0 ""
1 ""
2 ""
...
7 "Off"
8 "Off"
9 "Off"
10 "Off"
...
556 ""
557 ""

我查看this post,但使用枚举只是给了我与现在相同的问题。最好,我想坚持使用计数器变量和if / elif / else语句,因为我是我办公室中为数不多的编码员之一,并且希望其他人能够轻松理解这一点!

2 个答案:

答案 0 :(得分:2)

看起来你的字符串实际上包含双引号。从字符串中删除它们:

while counter < len(value_list)-1:
    value = value_list[counter].strip('"')
    if value in ("", " ", "N/A"):
        ...

或将它们添加到您要与之比较的值中:

elif str(value_list[counter]) == '"Off"':
                                 ^^^^^^^ this a string literal containing the
                                         characters ", O, f, f, "

答案 1 :(得分:1)

您在此处提供的输出是不可能的:

AttachmentFile

首先递增counter = 0 while counter < len(value_list)-1: if str(value_list[counter]) in ("", " ", "N/A"): value_list[counter] = "Null" elif str(value_list[counter]) == "Off": value_list[counter] = "No" elif str(value_list[counter]) == "On": value_list[counter] = "Yes" counter += 1 print counter, value_list[counter] ,然后才打印。这意味着您将首先输出counter为1.
这也意味着你打印value_list中的下一个位置(你尚未触及) 此外,您的循环在最后一个元素之前停止。

应该是这样的:

counter