gpt4 book ai didi

python - 如何检查和更改文本文件中的值? ( python 2.7.11)

转载 作者:行者123 更新时间:2023-11-28 21:09:59 24 4
gpt4 key购买 nike

文本文件解释:

Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1 ,0, 0, 0, 0
Fname, Lname, Email, number, Value i want checking ^ , ...,...,...,...

目的:检查 key 的 value[4] 中的数字不是 0 或 7。如果它是 0 则它变为 1,如果它是 7 则它变为 6。所以如果它是 0 那么 + 1,如果它是 7 那么 -1。

文本文件:

Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1,0, 0, 0, 0
Sarah,Brown,S.brown@anemailaddress.com,01866522555, 5,0, 0, 0, 0
Andrew,Smith,A.smith@anemailaddress.com,01899512785, 7,0, 0, 0, 0
Kevin,White,K.white@anemailaddress.com,01579122345, 0,0, 0, 0, 0
Samantha,Collins,S.collins@anemailaddress.com,04269916257, 0,0, 0, 0, 0

代码运行后,应该是这样的:

Joe,Bloggs,J.bloggs@anemailaddress.com,01269512355, 1,0, 0, 0, 0
Sarah,Brown,S.brown@anemailaddress.com,01866522555, 5,0, 0, 0, 0
Andrew,Smith,A.smith@anemailaddress.com,01899512785, 6,0, 0, 0, 0
Kevin,White,K.white@anemailaddress.com,01579122345, 1,0, 0, 0, 0
Samantha,Collins,S.collins@anemailaddress.com,04269916257, 1,0, 0, 0, 0

我目前的代码会产生错误:

fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
IndexError: list assignment index out of range

代码:

f = open ("players.txt","r")
fileinfo = f.readlines()
f.close()

j = 0
for i in fileinfo:
i = i.strip()
i = i.split(",")
value = int(i[4])
if value == "0":
value = value + 1
fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
j = j + 1

if value == "7":
value = value - 1
fileinfo[j] = i[0] + ',' + i[1] + ',' + i[2] + ',' + i[3] + ',' + str(value) + ',' + i[5] + ',' + i[6] + ',' + i[7]+ ',' + i[8] + '\n'
j = j + 1

f = open ("players.txt","w")
for i in fileinfo:
f.write(i)
f.close()

这可能是做我想做的事情的一种非常复杂的方式。请你帮我实现我的目标。随意重写我的整个代码,但你能详细解释一下你做了什么吗?我对编码很陌生。

对于 future 的读者

有两个有效的答案。我只能勾选其中一个。希望这个问题能帮助 future 的读者,就像它对我所做的那样。

最佳答案

您的代码存在的问题如下:

  1. 在将数字转换为 int 之前,您应该删除数字周围的空格:如果数字周围有空格,value = int(i[4]) 会崩溃。使用 value = int(i[4].strip()) 来解决这个问题。

  2. 您要将值转换为整数,然后将该整数与字符串进行比较。这将始终评估为 False

    值 = int(i[4])
    如果值 == "0":

  3. 您在每个循环中递增 j 两次,这就是您的代码因 IndexError 而崩溃的原因。我建议使用 enumerate而不是手动维护 j

固定代码可能如下所示:

for j, i in enumerate(fileinfo):
i = i.strip()
i = i.split(",")
value = i[4].strip()
if value == "0":
i[4] = "1"
elif value == "7":
i[4] = "6"
fileinfo[j] = ','.join(i) + '\n'

关于python - 如何检查和更改文本文件中的值? ( python 2.7.11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com