鱼C论坛

 找回密码
 立即注册
查看: 118|回复: 3

求助

[复制链接]
发表于 2024-10-17 00:22:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import csv
import os

# 打开文件
with open("output.txt", "w") as file:
    pass
with open('quanbuEQT.csv', newline='') as csvfile:
    # 创建csv reader对象
    csv_reader = csv.reader(csvfile)
    # 遍历每一行
    for row in csv_reader:
        # 取出日期
        date = row[0]
        # 判断日期是否在指定时间范围内,假设指定的时间范围是2021年1月1日到2021年1月10日
        if '2008-02-01' <= date <= '2008-02-02':
            # 将数据写入txt文件中
            with open('output.txt', 'a') as txtfile:
                txtfile.write(','.join(row) + '\n')
with open('output.txt', 'r') as f:
    # 读取文件内容并转换为字符串
    content = f.read()
    # 要统计的字符
char = 'X'
char1 = 'C'
char2 ='Z'
# 使用count方法统计字符出现的次数
count = content.count(char)

count1 = content.count(char1)
count2 = content.count(char2)
# 输出结果
print("文件中'{}'的个数为:{}".format(char, count))
print("文件中'{}'的个数为:{}".format(char1, count1))
print("文件中'{}'的个数为:{}".format(char2, count2))
#删除txt文件
#os.remove('output.txt')



上述程序在进行规定时间范围内的统计时,不会将开始和结尾的时间包含的符合条件的数据统计进去,怎么办。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-17 00:22:22 | 显示全部楼层
你好!根据你代码的结构,你似乎遇到了一个不完整的条件判断和操作。以下是如何完善你的代码来过滤指定的日期范围,并将数据写入文件的一个简洁示例:
import csv
import datetime

# 打开输出文件,准备写入数据
with open("output.txt", "w") as outfile:
    # 打开并读取CSV文件
    with open('quanbuEQT.csv', newline='') as csvfile:
        csv_reader = csv.reader(csvfile)
        # 遍历每一行数据
        for row in csv_reader:
            # 提取日期列,假设日期在第一列
            date_str = row[0]
            try:
                # 转换为日期对象
                date = datetime.datetime.strptime(date_str, '%Y-%m-%d').date()
            except ValueError:
                # 如果日期格式不正确,则跳过此行
                continue
            
            # 判断日期是否在指定范围内
            if datetime.date(2021, 1, 1) <= date <= datetime.date(2021, 1, 10):
                # 如果在范围内,将这行数据写入文件
                outfile.write(','.join(row) + '\n')

几个关键点:
1. 确保你的日期字符串与`strptime`方法使用的格式匹配。
2. 检查是否需要从每行的特定列中提取日期,这里假定日期在第一列。
3. 使用错误处理来跳过任何日期格式不匹配的行。

这样做可以帮助你筛选出你所需要的日期范围内的数据行并写入到`output.txt`文件中。希望这能帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-17 00:24:45 | 显示全部楼层
FishC 发表于 2024-10-17 00:22
你好!根据你代码的结构,你似乎遇到了一个不完整的条件判断和操作。以下是如何完善你的代码来过滤指定的日 ...

这个可以统计比如1.1号和1.10号的数据吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-17 00:24:55 | 显示全部楼层
wjq0414 发表于 2024-10-17 00:24
这个可以统计比如1.1号和1.10号的数据吗


要统计特定日期范围内的数据,你可以使用日期比较来过滤相关行。假如你希望统计2021年1月1日到2021年1月10日的数据,并将符合条件的数据写入`output.txt`文件,可以参考下面的代码:
import csv
import datetime

# 打开输出文件,准备写入数据
with open("output.txt", "w", newline='') as outfile:
    csv_writer = csv.writer(outfile)
    # 打开并读取CSV文件
    with open('quanbuEQT.csv', newline='') as csvfile:
        csv_reader = csv.reader(csvfile)
        # 遍历每一行数据
        for row in csv_reader:
            # 假设日期在第一列
            date_str = row[0]
            try:
                # 将字符串转换为日期对象
                date = datetime.datetime.strptime(date_str, '%Y-%m-%d').date()
            except ValueError:
                # 如果日期格式不正确,则跳过此行
                continue
            
            # 判断日期是否在指定范围内
            if datetime.date(2021, 1, 1) <= date <= datetime.date(2021, 1, 10):
                # 写入符合条件的行到输出文件
                csv_writer.writerow(row)

在这段代码中,我们假设你的CSV文件中日期字段(`date_str`)在第一列。如果日期列在不同的位置,你需要调整`row[0]`这一部分来对应正确的列索引。代码中日期判断部分相当于仅筛选出在你的设定范围(包括起止日期)内的数据,并将其写入到`output.txt`中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表