编辑:根据您的解释,您想要实现的目标,此代码应该这样做:
编辑2:抱歉忘记将Python 2.7的
我的代码遇到了一些困难 - 想知道是否有人可以帮助我解决我哪里出错了。
我试图实现的目标的一般语法是:
- 获取用户输入
- 将输入拆分为单个变量
- 将变量(修正(写入"数据.csv">
- 从新修订的"数据.csv"中读取变量
- 将变量添加到列表
- 如果变量 1 <= 列表长度,则
#run some code
- 如果变量 2 <= 列表长度,则
#run some code
这是我的python代码:
from selenium import webdriver
import time
import csv
x = raw_input("Enter numbers separated by a space")
integers = [[int(i)] for i in x.split()]
with open("data.csv", "a") as f:
writer = csv.writer(f)
writer.writerows(integers)
with open('data.csv', 'r') as f:
file_contents = f.read()
previous_FONs = file_contents.split(' ')
if list.count(integers[i]) == 1:
#run some code
elif list.count(integers[i]) == 2:
#run some code
我收到的错误消息是TypeError: count() takes exactly one argument (0 given)
因为以下行
integers = [[int(i)] for i in x.split()]
您正在创建列表列表。因此,您将列表传递给计数方法。试试这个:
integers = [int(i) for i in x.split()]
编辑:根据您的解释,您想要实现的目标,此代码应该这样做:
import csv
x = raw_input('Enter numbers separated by a space: ')
new_FONs = [[int(i)] for i in x.split()]
with open('data.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerows(new_FONs)
with open('data.csv', 'r') as f:
all_FONs_str = [line.split() for line in f]
all_FONs = [[int(FON[0])] for FON in all_FONs_str]
# For each of the user-input numbers
for FON in new_FONs:
# Count the occurance of this number in the CSV file
FON_count = all_FONs.count(FON)
if FON_count == 1:
print(f'{FON[0]} occurs once')
# do stuff
elif FON_count == 2:
print(f'{FON[0]} occurs twice')
# do stuff
我将读取的列表名称从 CSV 更改为all_FONs
只是为了提醒它包含旧条目和新条目(因为我们在阅读前将它们写入文件(。
此外,您需要转换条目,因为从CSV读取时,您会得到字符串而不是整数,这将使比较变得困难。也许不需要整个转换为 int,只需处理字符串即可。但这取决于你需要什么。
编辑2:抱歉忘记将Python 2.7的
input
更改为raw_input
:)