尝试创建一个程序来更改存储在外部CSV文件中的用户名,方法是导入该文件,然后将其写入列表并追加列表。
我最初尝试使用无效的删除功能,然后尝试pop()
import csv
Usernames = []
x = int(input('How many user name u want to enter?: '))
for i in range(x):
file = open('usernames.csv','a+')
username = input('Enter the username: ')
file.write(username)
file.write('\n')
file.close()
f = open ('usernames.csv','r')
with open ('usernames.csv','r') as fi1e:
reader = csv.reader(fi1e)
for row in reader:
Username = row
Usernames.append(Username)
print (Usernames)
f.close()
change_from = input ('What username would you like to change?: ')
Usernames.pop(change_from)
我希望它从列表中删除用户名。但是相反,它说“ str”对象不能解释为整数。
答案 0 :(得分:0)
这是因为def recvMessages(s):
while True:
message = s.recv(2048)
print(message)
message = message.decode()
messages.append(message)
os.system("cls")
for message in messages:
print(message)
def sendMessage(s):
while True:
message = input()
message = message.encode()
s.send(message)
s = socket.socket()
host = socket.gethostname()
port = 8080
s.connect((host, port))
messages = []
print("Connected")
connected = True
threading.Thread(target=sendMessage, args=(s,)).start()
threading.Thread(target=recvMessages, args=(s,)).start()
返回一个字符串。您可以像这样使用input
将其转换为整数:int
,然后将得到所需的类型。
答案 1 :(得分:0)
您需要将change_from变量转换为int:
change_from = int(input('What username would you like to change?: '))
Usernames.pop(change_from)
答案 2 :(得分:0)
您没有正确使用pop
函数。请参阅https://docs.python.org/3/tutorial/datastructures.html
list.pop([i])
删除列表中给定位置的项目,然后 把它返还。如果未指定索引,则a.pop()删除并返回 列表中的最后一项。 (方法中i周围的方括号 签名表示该参数是可选的,而不是您应该 在该位置键入方括号。您将看到此表示法 经常在Python库参考中找到。)
您需要找到要删除的字符串的索引,并将其传递给pop
,如下所示:
>>> a=['first', 'second', 'third']
>>> p = a.index('second')
>>> p
1
>>> a.pop(p)
'second'
>>> a
['first', 'third']
答案 3 :(得分:0)
pop()
将项目的索引作为参数。在这种情况下,您应该检查用户输入的内容是否在列表中。如果是这样,它是什么索引?然后使用该整数。
change_from = input ('What username would you like to change?: ')
if change_from in Usernames:
Usernames.pop(Usernames.index(change_from))
更新:
由于您不在乎返回的内容,因此请使用remove()
。还要使用strip()
来确保删除换行符。
这是全部。该行是一个数组,因此您需要选择第一项。
import csv
Usernames = []
x = int(input('How many user name u want to enter?: '))
for i in range(x):
file = open('usernames.csv','a+')
username = input('Enter the username: ')
file.write(username)
file.write('\n')
file.close()
f = open ('usernames.csv','r')
with open ('usernames.csv','r') as fi1e:
reader = csv.reader(fi1e)
for row in reader:
Username = row[0]
Usernames.append(Username.strip())
print (Usernames)
f.close()
change_from = input ('What username would you like to change?: ')
if change_from.strip() in Usernames:
Usernames.remove(change_from)