我正在尝试编辑列表中的值,因此我可以将此列表与我在程序中其他位置的列表类似。
我从文档中获取了一个值列表,并希望转向"关闭"进入"否"和"开"进入"是",""进入" 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语句,因为我是我办公室中为数不多的编码员之一,并且希望其他人能够轻松理解这一点!
答案 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