鱼C论坛

 找回密码
 立即注册
查看: 1283|回复: 22

[已解决]求助各位大佬

[复制链接]
发表于 2020-6-20 16:21:24 | 显示全部楼层 |阅读模式

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

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

x
ta_content = element.find_elements_by_xpath('//*[@id="datalist"]/table/tbody/tr[1]/td[1]')
        lst1 = []
        if not ta_content:
            print(None)
        else:
            for ta in ta_content:
                ta = ta.get_attribute("innerText")
                print(ta)

tb = .....

tc = ......

td =.....

te =.....

tf = .....

tg = .....

ti_content = element.find_elements_by_xpath('//*[@id="datalist"]/table/tbody/tr[9]/td[1]')
        lst9 = []
        if not ti_content:
            print(None)
        else:
            for ti in ti_content:
                ti = ti.get_attribute("innerText")
                print(ti)

write_clo = [ta, tb, tc, td, te, tf, tg, th, ti]

df = pd.DataFrame(columns=(write_clo))

df.to_csv('sao.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')


运行后 pycharm下面窗口显示出来的结果是:0.9  None  None  None   0.94  0.95  0.96  0.97   0.98

但是保存到 csv 里面却显示不出None ,而是用其他的数据给顶替了,变成了 : 0.9  0.88  0.87  0.87   0.94  0.95  0.96  0.97   0.98

请教各位大佬,
    我想要csv里面保存的数据也能显示出None,应该怎么操作?



最佳答案
2020-6-20 18:36:20
lpp25621832 发表于 2020-6-20 18:03
head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list = [ta, tb, ...



建议直接发完整代码,我帮你看,这大概率是你自己数据没弄好的原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-20 16:22:26 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-20 16:23 编辑



把None 转为 str 然后写入即可吧
str(None)
>>> 'None'

None  # 空
>>>     # 所以不会显示东东

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

使用道具 举报

 楼主| 发表于 2020-6-20 16:32:28 | 显示全部楼层
Twilight6 发表于 2020-6-20 16:22
把None 转为 str 然后写入即可吧

不是None的问题,假设我把None改为数字0,那么我pycharm下面运行的结果是对的,是可以显示0的,但是存到csv里面就又没有0了。
运行后 pycharm下面窗口显示出来的结果是:0.9  0  0  0   0.94  0.95  0.96  0.97   0.98

但是保存到 csv 里面却显示不出0,而是用其他的数据给顶替了,变成了 : 0.9  0.88  0.87  0.87   0.94  0.95  0.96  0.97   0.98

所以 问题是我存到csv里面的时候,如果当前数值不存在的话,怎么样能够在csv里面把这个位置给空出来,或者用个数字或者字母(随便什么,比如0)来占这个空位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 17:08:59 | 显示全部楼层
lpp25621832 发表于 2020-6-20 16:32
不是None的问题,假设我把None改为数字0,那么我pycharm下面运行的结果是对的,是可以显示0的,但是存到c ...

我觉得是你代码有一小点问题,打印的和写入的不一致吧? 检查检查~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 17:15:44 | 显示全部楼层
Twilight6 发表于 2020-6-20 17:08
我觉得是你代码有一小点问题,打印的和写入的不一致吧? 检查检查~

嗯,打印出来的和我写入的不一样。就是假如数据不存在,我可以打印出来0.9  不存在  不存在  不存在   0.94  0.95  0.96  0.97   0.98
但是存入到csv里面就变成了  0.9  0.88  0.87  0.87   0.94  0.95  0.96  0.97   0.98

代码我发到第一行了啊  大神帮我看看,是哪里写的有问题,还是我写的存入csv里的这一段:
write_clo = [ta, tb, tc, td, te, tf, tg, th, ti]

df = pd.DataFrame(columns=(write_clo))

df.to_csv('sao.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')

是不是差什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 17:24:42 | 显示全部楼层
lpp25621832 发表于 2020-6-20 17:15
嗯,打印出来的和我写入的不一样。就是假如数据不存在,我可以打印出来0.9  不存在  不存在  不存在   0. ...


是不是数据有问题,你看看写入前一行打印一次

test.png

我测试没什么毛病
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 17:34:27 | 显示全部楼层
Twilight6 发表于 2020-6-20 17:24
是不是数据有问题,你看看写入前一行打印一次

我的意思就是 拿你上面这个例子举例。
当爬到第5页的这个 1 = [[1, 0, 3],[4, 0, 6], [8, 0, 9]]的时候,
1 = 【[不存在],[不存在], [8, 0, 9]]。
然后pycharm可以打印出这个[不存在],[不存在],
但是存入csv里面就不行,我想请问在csv里面如何也能显示出这个[不存在],或者就让这个位置空着,什么都不显示也行。就是不要把下面的数据给移到上面了。这样数据就错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 17:36:56 | 显示全部楼层
Twilight6 发表于 2020-6-20 17:24
是不是数据有问题,你看看写入前一行打印一次

我上面打印的时候 判断了 ta 这个数据在不在
但是我写入csv里面的时候没有判断
难道写入csv里面的时候也需要判断吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 17:40:58 | 显示全部楼层
lpp25621832 发表于 2020-6-20 17:36
我上面打印的时候 判断了 ta 这个数据在不在
但是我写入csv里面的时候没有判断
难道写入csv里面的时候 ...


这个意思?
import pandas as pd


head = ["标题1" , "标题2" , "标题3"]
l = [[None],[None],[ 8, 0, 9]]
for i in range(len(l)):
    if l[i] == [None]:
        l[i] = [str(l[i][0])]*3
df = pd.DataFrame (l , columns = head)
df.to_csv ("test.csv" ,index=False, encoding = "utf-8")

df2 = pd.read_csv ("test.csv", encoding = "utf-8")
print (df2)

QQ图片20200620174023.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 17:41:59 | 显示全部楼层
lpp25621832 发表于 2020-6-20 17:36
我上面打印的时候 判断了 ta 这个数据在不在
但是我写入csv里面的时候没有判断
难道写入csv里面的时候 ...


写入不需要判断呀,如果数据不存在会当为缺失值不是吗

然后就是一个空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 18:03:47 | 显示全部楼层

head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list = [ta, tb, tc, td, te, tf, tg, th, ti]
        for i in range(len(list)):
            if list[i] == [None]:
                list[i] = [str(list[i][0])]*9
                df = pd.DataFrame(list, columns=head)
                df.to_csv('demo1.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')

结果报错:Shape of passed values is (9, 1), indices imply (9, 9)
为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 18:06:41 | 显示全部楼层
Twilight6 发表于 2020-6-20 17:41
写入不需要判断呀,如果数据不存在会当为缺失值不是吗

然后就是一个空的

是啊 按理说应该是这样
可是我存入csv里面的时候,原本没有数据的那一栏 系统给自动的加了个数据。。。。导致数据错乱了啊

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

使用道具 举报

发表于 2020-6-20 18:36:20 | 显示全部楼层    本楼为最佳答案   
lpp25621832 发表于 2020-6-20 18:03
head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list = [ta, tb, ...



建议直接发完整代码,我帮你看,这大概率是你自己数据没弄好的原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 18:38:15 | 显示全部楼层
Twilight6 发表于 2020-6-20 18:36
建议直接发完整代码,我帮你看,这大概率是你自己数据没弄好的原因


Twilight6 发表于 2020-6-20 17:40
这个意思?

head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list = [ta, tb, tc, td, te, tf, tg, th, ti]
        for i in range(len(list)):
            if list == [None]:
                list = [str(list[0])]*9
                df = pd.DataFrame(list, columns=head)
                df.to_csv('demo1.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')

结果报错:Shape of passed values is (9, 1), indices imply (9, 9)

请问:这个怎么写能变成(9,1),而不是(9,9)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 18:53:12 | 显示全部楼层
lpp25621832 发表于 2020-6-20 18:38
Twilight6 发表于 2020-6-20 17:40
这个意思?


你 的 list = [ta, tb, tc, td, te, tf, tg, th, ti]
里面的数据有些不是 列表 导致报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 19:07:33 | 显示全部楼层
Twilight6 发表于 2020-6-20 18:53
你 的 list = [ta, tb, tc, td, te, tf, tg, th, ti]
里面的数据有些不是 列表 导致报错

ta就是每一页的列表的一行,每一页我都要提取9行里面的内容,但不是每一页的每一行都有内容,所以就会出现爬到某一页的时候ta没有数据的情况,
然后pycharm能够打印出来没有数据,
但是存入csv里面的时候就不会打印没有数据。

write_clo = [ta, tb, tc, td, te, tf, tg, th, ti]

df = pd.DataFrame(columns=(write_clo))

df.to_csv('sao.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')

我是不是要在存入csv的这个语句里面加个什么句子?或者有什么占位符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 19:19:49 | 显示全部楼层
lpp25621832 发表于 2020-6-20 19:07
ta就是每一页的列表的一行,每一页我都要提取9行里面的内容,但不是每一页的每一行都有内容,所以就会出 ...

语句里面加个什么句子?或者有什么占位符?


唉,这我不清楚了,你不方便发完整代码吗?不方便的话无能为力了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 19:38:55 | 显示全部楼层
Twilight6 发表于 2020-6-20 19:19
唉,这我不清楚了,你不方便发完整代码吗?不方便的话无能为力了

我一开始发的就相当于完整代码了,就差前面的一个url地址
这就是所有我要提取的内容了,每一页的9行里的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 19:39:59 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-21 12:08 编辑
lpp25621832 发表于 2020-6-20 19:38
我一开始发的就相当于完整代码了,就差前面的一个url地址
这就是所有我要提取的内容了,每一页的9行里的 ...


....你发这个代码我要补充是吗....?   代码中一个符号的错误都会导致整个代码无法运行....

你的编辑,还不如完全复制下来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-21 10:53:51 | 显示全部楼层
Twilight6 发表于 2020-6-20 19:39
无语了   你发这个代码我要补充是吗?   你知道代码每一个环节可能缺少一个参数都会导致整个代码无法运 ...

大神,我知道我的问题在哪了。
就是我存入csv里面的数据如果没有,它就自动的被前面一行的数据给替换了。
pandas里面不是有个:
    df.fillna(method="pad") #用前一个的数据代替NaN

但问题是我没有调用过这个方法,而且也不想用这个。
请问大神 怎么能让这个  df.fillna(method="pad") 恢复默认值 即 df.fillna(method="None")
真的非常感谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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