cc1236 发表于 2021-5-4 17:12:51

日期辅助表怎么保存或者引用,才能让下面程序获取到

本帖最后由 cc1236 于 2021-5-4 17:42 编辑

import datetime
from scipy.io import savemat

def create_assist_date(datestart=None, dateend=None):
    # 创建日期辅助表

    if datestart is None:
      datestart = '2016-01-01'
    if dateend is None:
      dateend = datetime.datetime.now().strftime('%Y-%m-%d')

    # 转为日期格式
    datestart = datetime.datetime.strptime(datestart, '%Y-%m-%d')
    dateend = datetime.datetime.strptime(dateend, '%Y-%m-%d')
    date_list =
    while datestart < dateend:
      # 日期叠加一天
      datestart += datetime.timedelta(days=+1)
      # 日期转字符串存入列表
      date_list.append(datestart.strftime('%Y-%m-%d'))
    return date_list
date_list就是我说的日期辅助表,for date in date_list从这里获取不到
第二段import jieba
import re,string
from zhon.hanzi import punctuation
import os
import csv


danmuCount = dict()
danmuNum = 0
punc = '~`!#$%^&*()_+-=|\';":/.,?><~·!@#¥%……&*()——+-=“:’;、。?》《{} oh1O○〇●哈'
with open('danmuku3.csv', 'a', encoding='utf-8') as savefile:
    writer = csv.writer(savefile)
    writer.writerow(['name','type','value','date'])
    for date in date_list:
      with open('csv3/danmutext_'+ date + '.csv', 'r', encoding='utf-8') as csvfile:
            print('---分析日期', date, '弹幕...\n')
            reader = csv.reader(csvfile)
            for line in reader:
                danmuNum = danmuNum + 1
                line = "".join(line)
                line = re.sub(r"[%s]+" % punc, "", line)
                # words_list = jieba.lcut(line)
                # for word in words_list:
                  # data = data + 1
                # line = line.lower()
                if len(line) >= 2 and len(line) <= 15:
                  if danmuCount.get(line):
                        danmuCount = danmuCount + 1
                  else:
                        danmuCount = 1

      sortList = sorted(danmuCount.items(), key=lambda item:item, reverse=True)

      if len(sortList)>10:
            pltLists = sortList[:10]

            for plttuple in pltLists:
                saveLine = []
                saveLine.append(plttuple)
                saveLine.append('Chinese')
                saveLine.append(plttuple)
                saveLine.append(date)
                writer.writerow(saveLine)


txxcat 发表于 2021-5-4 17:47:09

你的date_list是在函数create_assist_date中建立的,是属于create_assist_date的局部变量,外部是读取不了的。
另外你在第二段代码中没有调用create_assist_date函数,这是个用法错误。
有两种方法,一种是调用create_assist_date赋值给date_list:
date_list=create_assist_date()    #参数根据需求加入,这个date_list其实不是函数里的date_list,只是把函数的返回值赋值给它
第二种是先定义date_list,然后调用create_assist_date函数:date_list=[]
create_assist_date()    #参数根据需求加入,函数中无需返回

cc1236 发表于 2021-5-4 18:01:37

txxcat 发表于 2021-5-4 17:47
你的date_list是在函数create_assist_date中建立的,是属于create_assist_date的局部变量,外部是读取不了 ...

我是先想生成日期格式表,
再用第二段程序利用这个表筛选打开CSV文件并清洗数据
思路如下:

打开csv文件,获取保存的弹幕文本
清除无意义的标点符号,这里可以自己进行相应的设置
利用字典记录弹幕出现的次数
根据弹幕次数排序字典
每次写入次数最多的十条弹幕信息到另外的CSV文件中

cc1236 发表于 2021-5-4 18:02:19

txxcat 发表于 2021-5-4 17:47
你的date_list是在函数create_assist_date中建立的,是属于create_assist_date的局部变量,外部是读取不了 ...

原链接:https://blog.csdn.net/qq_36178962/article/details/108125794
页: [1]
查看完整版本: 日期辅助表怎么保存或者引用,才能让下面程序获取到