lpp25621832 发表于 2020-6-20 16:21:24

求助各位大佬

ta_content = element.find_elements_by_xpath('//*[@id="datalist"]/table/tbody/tr/td')
      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/td')
      lst9 = []
      if not ti_content:
            print(None)
      else:
            for ti in ti_content:
                ti = ti.get_attribute("innerText")
                print(ti)

write_clo =

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

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


运行后 pycharm下面窗口显示出来的结果是:0.9NoneNoneNone   0.940.950.960.97   0.98

但是保存到 csv 里面却显示不出None ,而是用其他的数据给顶替了,变成了 : 0.90.880.870.87   0.940.950.960.97   0.98

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



Twilight6 发表于 2020-6-20 16:22:26

本帖最后由 Twilight6 于 2020-6-20 16:23 编辑



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

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

lpp25621832 发表于 2020-6-20 16:32:28

Twilight6 发表于 2020-6-20 16:22
把None 转为 str 然后写入即可吧

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

但是保存到 csv 里面却显示不出0,而是用其他的数据给顶替了,变成了 : 0.90.880.870.87   0.940.950.960.97   0.98

所以 问题是我存到csv里面的时候,如果当前数值不存在的话,怎么样能够在csv里面把这个位置给空出来,或者用个数字或者字母(随便什么,比如0)来占这个空位。

Twilight6 发表于 2020-6-20 17:08:59

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

我觉得是你代码有一小点问题,打印的和写入的不一致吧? 检查检查~

lpp25621832 发表于 2020-6-20 17:15:44

Twilight6 发表于 2020-6-20 17:08
我觉得是你代码有一小点问题,打印的和写入的不一致吧? 检查检查~

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

代码我发到第一行了啊大神帮我看看,是哪里写的有问题,还是我写的存入csv里的这一段:
write_clo =

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

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

是不是差什么?

Twilight6 发表于 2020-6-20 17:24:42

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


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



我测试没什么毛病

lpp25621832 发表于 2020-6-20 17:34:27

Twilight6 发表于 2020-6-20 17:24
是不是数据有问题,你看看写入前一行打印一次




我的意思就是 拿你上面这个例子举例。
当爬到第5页的这个 1 = [,, ]的时候,
1 = 【[不存在],[不存在], ]。
然后pycharm可以打印出这个[不存在],[不存在],
但是存入csv里面就不行,我想请问在csv里面如何也能显示出这个[不存在],或者就让这个位置空着,什么都不显示也行。就是不要把下面的数据给移到上面了。这样数据就错了。

lpp25621832 发表于 2020-6-20 17:36:56

Twilight6 发表于 2020-6-20 17:24
是不是数据有问题,你看看写入前一行打印一次




我上面打印的时候 判断了 ta 这个数据在不在
但是我写入csv里面的时候没有判断
难道写入csv里面的时候也需要判断吗?

Twilight6 发表于 2020-6-20 17:40:58

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


这个意思?

import pandas as pd


head = ["标题1" , "标题2" , "标题3"]
l = [,,[ 8, 0, 9]]
for i in range(len(l)):
    if l == :
      l = )]*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)


Twilight6 发表于 2020-6-20 17:41:59

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

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

然后就是一个空的

lpp25621832 发表于 2020-6-20 18:03:47

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

head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list =
      for i in range(len(list)):
            if list == :
                list = )]*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)
为什么?

lpp25621832 发表于 2020-6-20 18:06:41

Twilight6 发表于 2020-6-20 17:41
写入不需要判断呀,如果数据不存在会当为缺失值不是吗

然后就是一个空的

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

Twilight6 发表于 2020-6-20 18:36:20

lpp25621832 发表于 2020-6-20 18:03
head = ['标题1','标题2','标题3','标题4','标题5','标题6','标题7','标题8','标题9' ]
list =



建议直接发完整代码,我帮你看,这大概率是你自己数据没弄好的原因

lpp25621832 发表于 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 =
      for i in range(len(list)):
            if list == :
                list = )]*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)?

Twilight6 发表于 2020-6-20 18:53:12

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




你 的 list =
里面的数据有些不是 列表 导致报错

lpp25621832 发表于 2020-6-20 19:07:33

Twilight6 发表于 2020-6-20 18:53
你 的 list =
里面的数据有些不是 列表 导致报错

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

write_clo =

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

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

我是不是要在存入csv的这个语句里面加个什么句子?或者有什么占位符?

Twilight6 发表于 2020-6-20 19:19:49

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

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

唉,这我不清楚了,你不方便发完整代码吗?不方便的话无能为力了

lpp25621832 发表于 2020-6-20 19:38:55

Twilight6 发表于 2020-6-20 19:19
唉,这我不清楚了,你不方便发完整代码吗?不方便的话无能为力了

我一开始发的就相当于完整代码了,就差前面的一个url地址
这就是所有我要提取的内容了,每一页的9行里的数据。

Twilight6 发表于 2020-6-20 19:39:59

本帖最后由 Twilight6 于 2020-6-21 12:08 编辑

lpp25621832 发表于 2020-6-20 19:38
我一开始发的就相当于完整代码了,就差前面的一个url地址
这就是所有我要提取的内容了,每一页的9行里的 ...

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

你的编辑,还不如完全复制下来

lpp25621832 发表于 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")
真的非常感谢你。
页: [1] 2
查看完整版本: 求助各位大佬