Python,编码为 csv。烦恼
Python, code to csv. Troubles
首先想说的是,我已经在论坛上研究了大约 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
如有任何想法,我们将不胜感激。
如果我没理解错的话,你想在空格处分割,然后用逗号连接:
>>> 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
。
print data
打印数据和一个换行符。
print data,
禁止换行。
有帮助吗?
我想你想要:
if (count < 18):
data = data + ","
print data,
count += 1
elif (count==19):
print data
count = 0
有更多 pythonic 方法可以做到这一点,但我认为这就是你问题的答案。
查看您的代码,您首先需要像这样初始化一个结果字符串:
result = ""
在第二个 for 循环之前执行此操作。然后你需要在打印数据变量的两个地方添加到那个循环
result = result + data + ", "
和
result = result + data
然后紧接着第二行
print result
你应该得到你需要的。
首先想说的是,我已经在论坛上研究了大约 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
如有任何想法,我们将不胜感激。
如果我没理解错的话,你想在空格处分割,然后用逗号连接:
>>> 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
。
print data
打印数据和一个换行符。
print data,
禁止换行。 有帮助吗?
我想你想要:
if (count < 18):
data = data + ","
print data,
count += 1
elif (count==19):
print data
count = 0
有更多 pythonic 方法可以做到这一点,但我认为这就是你问题的答案。
查看您的代码,您首先需要像这样初始化一个结果字符串:
result = ""
在第二个 for 循环之前执行此操作。然后你需要在打印数据变量的两个地方添加到那个循环
result = result + data + ", "
和
result = result + data
然后紧接着第二行
print result
你应该得到你需要的。