【问题标题】:Python, code to csv. TroublesPython,编码为 csv。麻烦事
【发布时间】:2015-10-15 22:07:51
【问题描述】:

首先想说的是,我已经研究了论坛大约 2 天,但没有找到任何适合我的东西。 好吧,我们开始吧。我正在报废一个网站,我只需要按顺序设置 python 代码的输出即可。

这是我运行后得到的:

1 
Kidderminster Harr
1183
283
138
170
1005
731
""
208
148
236
813
877
""
+210
1727
.536

在单个列中..

这就是我想要的:我想要一个这样的 csv

1, Kidderminster Harr, 1183, 283, 138, 170, 1005, 731, "", 208, 148, 236,etc...

前段时间,我记得在每个元素中添加 +',' 会成功...现在我不知道为什么不再起作用了..

这是我目前所拥有的:

import requests
from bs4 import BeautifulSoup

req = requests.get('http://www.statto.com/football/stats/england/national-league/all-time-table', headers={'User-Agent':'a-user-agent'})
soup = BeautifulSoup(req.text)
summary = soup.find("div",{"id" : "page-content"})
tables = summary.find('table')
count = 0
for row in tables.findAll('tr'):
    for cell in row.findAll('td'):
        data = cell.getText()
        if (count < 18):
            data = data + ';'
            print data
        count += 1
        if (count==19):
            print data
        count = 0

任何想法都将不胜感激。

【问题讨论】:

    标签: python csv output


    【解决方案1】:
    print data
    

    打印数据和换行符。

    print data,
    

    抑制换行。 这有帮助吗?

    我想你想要:

    if (count < 18):
        data = data + ","
        print data,
        count += 1
    elif (count==19):
        print data
        count = 0
    

    有更多的pythonic方法可以做到这一点,但我认为这是你问题的答案。

    【讨论】:

    • 这就是我所说的!谢啦!!我已经疯了 3 天了,只是我忘了把那个“,”放在印刷品后面!
    • Python 3 和/或“from future import print_function”为您提供了打印功能与打印语句。这可以传递一个“end”参数,例如 end="" 来禁止换行。但在 python 2 中,这就是它的工作原理。
    【解决方案2】:

    如果我理解正确,你想在空格上分割,然后用逗号加入:

    >>> string =  "1 Kidderminster Harr 1183 283 138 170 1005 731 "" 208 148 236 813 877 "" +210 1727 .536"
    >>> ", ".join(string.split())
    '1, Kidderminster, Harr, 1183, 283, 138, 170, 1005, 731, 208, 148, 236, 813, 877, +210, 1727, .536'
    

    split 方法将通过空格将字符串拆分为一个列表,然后join 创建一个字符串,其中每个列表成员由", " 分隔。

    编辑:您的问题有所改变,但如果您可以将列的每个部分附加到列表中,请致电join

    【讨论】:

      【解决方案3】:

      查看您的代码,您首先需要像这样初始化一个结果字符串:

      result = ""
      

      在第二个 for 循环之前执行此操作。那么您需要在打印数据变量的两个地方添加到该循环

      result = result + data + ", "
      

      result = result + data
      

      然后在第二行之后

      print result
      

      你应该得到你需要的。

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 2011-12-27
        • 2015-12-04
        • 1970-01-01
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        相关资源
        最近更新 更多