很抱歉,如果我的代码很糟糕,我刚开始学习Python。
我正在从HTML文件中抓取数据并尝试写入CSV。
问题是它正在将所有内容写入一个单元格。
for table in soup.find_all('table', class_='players-table'):
for headers in soup.find_all('thead'):
for y in headers.findAll('th'):
[csvHeader.append(i) for i in y if y.getText() != '']
counter = 0
myfile = open('/Users/andrew/Documents/Projects/Football Data/ppi.csv', 'wb')
wr = csv.writer(myfile, delimiter=',', lineterminator='\n', quoting=csv.QUOTE_MINIMAL)
c = csv.writer(myfile)
c.writerow(csvHeader)
for table in soup.find_all('table', class_='players-table'):
for headers in soup.find_all('tbody'):
for rows in headers.findAll('tr'):
for x in rows.findAll('td'):
if x.getText() !='':
csvRows_temp.append(x.getText().replace('\n ','').replace('\n ',''))
counter +=1
if counter == 13:
myList = [','.join(csvRows_temp).encode('utf8').strip()]
csvRows_temp.append('\n')
c.writerow(myList)
csvRows_temp[:] = []
myList[:] = []
counter = 0
输出是这样的:
如何将其写入每个单元格而不是将其传递到每一行的单个单元格?
答案 0 :(得分:1)
这一行:
myList = [','.join(csvRows_temp).encode('utf8').strip()]
创建一个只包含一个元素的列表,一个包含多个逗号的字符串。
尝试:
myList = csvRows_temp
或者,如果您认为需要文本处理:
myList = [x.encode('utf8').strip() for x in csvRows_temp]