Python 计数不正确

Python 计数不正确,python,python-3.x,Python,Python 3.x,我从字典中抓取了一堆单词,并创建了一个包含所有单词的大型CSV文件,每行一个单词 我有另一个功能,它读取大量的CSV文件,然后创建较小的CSV文件 该函数应该创建只有500字/行的CSV文件,但有点不对劲。第一个文件有501个字/行。其余文件有502个字/行 伙计,也许我累了,但我似乎无法在我的代码中找出到底是什么导致了这一点。还是我的代码没有任何问题 下面是我假设导致问题的函数部分。下面可以看到完整的功能 功能的可疑部分 def create_csv_文件(): 限额=500 计数=0 fil

我从字典中抓取了一堆单词,并创建了一个包含所有单词的大型CSV文件,每行一个单词

我有另一个功能,它读取大量的CSV文件,然后创建较小的CSV文件

该函数应该创建只有500字/行的CSV文件,但有点不对劲。第一个文件有501个字/行。其余文件有502个字/行

伙计,也许我累了,但我似乎无法在我的代码中找出到底是什么导致了这一点。还是我的代码没有任何问题

下面是我假设导致问题的函数部分。下面可以看到完整的功能

功能的可疑部分
def create_csv_文件():
限额=500
计数=0
filecount=1
zfill=3
文件名='C:\\Users\\Anthony\\Desktop\\scrap\\Dictionary\\terms{}.csv'。格式('1'.zfill(zfill))
打开('C:\\Users\\Anthony\\Desktop\\Scrape\\Results\\dictionary.csv')作为读取文件:
csvReader=csv.reader(readfile)
对于csvReader中的行:
术语=行[0]
如果术语为“”:
术语=术语。替换(“”,“”)

if count所以文件行数奇怪的原因是if-else条件

count
小于或等于
limit
时,可以增加
count
。对于您的第一次迭代,您将递增到1,然后编写第一个术语,然后递增,依此类推。因为您使用了
=limit
,并创建了一个新文件。在写入CSV文件之后而不是之前,递增
计数。这应该会有帮助

def create_csv_files():
  limit = 500
  count = 0
  filecount = 1
  zfill = 3
  filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format('1'.zfill(zfill))
  with open('C:\\Users\\Anthony\\Desktop\\Scrape\\Results\\dictionary.csv') as readfile:
    csvReader = csv.reader(readfile)
    for row in csvReader:
      term = row[0]
      if ' ' in term:
        term = term.replace(' ', '')
      # Remove if and keep else
      if count >= limit:
        count = 0
        filecount += 1
        filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format(str(filecount).zfill(zfill))
      aw = 'a' if os.path.exists(filename) else 'w'
      with open(filename, aw, newline='') as writefile:
        fieldnames = [ 'term' ]
        writer = csv.DictWriter(writefile, fieldnames=fieldnames)
        writer.writerow({
          'term': term
        })
        count += 1 # Increment here

因此,文件的行数奇怪的原因在于if-else条件

count
小于或等于
limit
时,可以增加
count
。对于您的第一次迭代,您将递增到1,然后编写第一个术语,然后递增,依此类推。因为您使用了
=limit
,并创建了一个新文件。在写入CSV文件之后而不是之前,递增
计数。这应该会有帮助

def create_csv_files():
  limit = 500
  count = 0
  filecount = 1
  zfill = 3
  filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format('1'.zfill(zfill))
  with open('C:\\Users\\Anthony\\Desktop\\Scrape\\Results\\dictionary.csv') as readfile:
    csvReader = csv.reader(readfile)
    for row in csvReader:
      term = row[0]
      if ' ' in term:
        term = term.replace(' ', '')
      # Remove if and keep else
      if count >= limit:
        count = 0
        filecount += 1
        filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format(str(filecount).zfill(zfill))
      aw = 'a' if os.path.exists(filename) else 'w'
      with open(filename, aw, newline='') as writefile:
        fieldnames = [ 'term' ]
        writer = csv.DictWriter(writefile, fieldnames=fieldnames)
        writer.writerow({
          'term': term
        })
        count += 1 # Increment here


到底是什么地方出了问题?@彻底崩溃了哦,为什么它删除了我的一段?!?!第一个文件有501个字/行。其余的文件有502个字/行。为什么不使用熊猫来进行此类操作?这很简单,也很容易理解。参考@Vishnudev不知道pandas isPandas是一个用于数据操作和分析的库。特别是大数据可以以快速和全面的方式进行操作。它提供数据结构来保存数据。示例
Dataframe
(具有行和列的二维数据结构)可用于保存
csv
数据。使用
pandas.read_csv
读取csv数据。到底出了什么问题?@完全被破坏了哦,它删除了我的一段文字?!?!第一个文件有501个字/行。其余的文件有502个字/行。为什么不使用熊猫来进行此类操作?这很简单,也很容易理解。参考@Vishnudev不知道pandas isPandas是一个用于数据操作和分析的库。特别是大数据可以以快速和全面的方式进行操作。它提供数据结构来保存数据。示例
Dataframe
(具有行和列的二维数据结构)可用于保存
csv
数据。使用
pandas.read_csv
读取csv数据。哦,对了,顺序是个问题,因为在计数器重置为0,然后再添加另一个计数器的情况下,因此当添加第二个计数器时,计数器将仅为1。先增加然后改变条件应该可以解决这个问题。这也可以通过重置为
1
而不是
0
i来解决believe@BugWhisperer我也想提出这个建议,但我有点强迫性,因为我喜欢我的计数器从相同的数字开始。但是,是的,这也会起作用。“你仍然需要把else条款变成一个严格的不平等条款。”同样,我认为你应该看看熊猫的建议。这会使你的功能更短。您可以将数据帧切片为所需的实际行数。我需要所有行,因此这不是一个因素。出于好奇,请简化我的代码的哪一部分?哦,对了,顺序是个问题,因为它会在计数器重置为0,然后再添加另一个计数器的情况下结束,因此当添加第二个计数器时,计数器将仅为1。先增加然后改变条件应该可以解决这个问题。这也可以通过重置为
1
而不是
0
i来解决believe@BugWhisperer我也想提出这个建议,但我有点强迫性,因为我喜欢我的计数器从相同的数字开始。但是,是的,这也会起作用。“你仍然需要把else条款变成一个严格的不平等条款。”同样,我认为你应该看看熊猫的建议。这会使你的功能更短。您可以将数据帧切片为所需的实际行数。我需要所有行,因此这不是一个因素。出于好奇,请简化我的代码的哪一部分?
def create_csv_files():
  limit = 500
  count = 0
  filecount = 1
  zfill = 3
  filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format('1'.zfill(zfill))
  with open('C:\\Users\\Anthony\\Desktop\\Scrape\\Results\\dictionary.csv') as readfile:
    csvReader = csv.reader(readfile)
    for row in csvReader:
      term = row[0]
      if ' ' in term:
        term = term.replace(' ', '')
      # Remove if and keep else
      if count >= limit:
        count = 0
        filecount += 1
        filename = 'C:\\Users\\Anthony\\Desktop\\Scrape\\Dictionary\\terms{}.csv'.format(str(filecount).zfill(zfill))
      aw = 'a' if os.path.exists(filename) else 'w'
      with open(filename, aw, newline='') as writefile:
        fieldnames = [ 'term' ]
        writer = csv.DictWriter(writefile, fieldnames=fieldnames)
        writer.writerow({
          'term': term
        })
        count += 1 # Increment here