Python 如何编写文件作为我的打印?

Python 如何编写文件作为我的打印?,python,python-3.x,beautifulsoup,wikipedia,Python,Python 3.x,Beautifulsoup,Wikipedia,我用Python3和bs4编写了一个程序,成功地获得了Wikipedia的子类别。现在,我可以看到打印结果,但我无法将结果写入文件 from bs4 import BeautifulSoup import requests import csv url = 'https://en.wikipedia.org/wiki/Category:proprietary software' content = requests.get(url).content soup = BeautifulSoup(c

我用Python3和bs4编写了一个程序,成功地获得了Wikipedia的子类别。现在,我可以看到打印结果,但我无法将结果写入文件

from bs4 import BeautifulSoup
import requests
import csv

url = 'https://en.wikipedia.org/wiki/Category:proprietary software'
content = requests.get(url).content
soup = BeautifulSoup(content,'lxml')
noOFsubcategories = soup.find('p')
print('------------------------------------------------------------------') 
print(noOFsubcategories.text+'------------------------------------------------------------------')
tag = soup.find('div', {'class' : 'mw-category'})
links = tag.findAll('a')
#print(links)

counter = 1
for link in links:
    print ( str(counter) + "  " + link.text)
    counter = counter + 1

with open('subcategories.csv', 'a') as f:
    f.write(links)

首先,使用索引和链接文本初始化列表列表,然后使用来写入csv文件。注意下面的用法:


此外,您还可以通过使用一个:


我正在执行的完整代码:

import csv

from bs4 import BeautifulSoup
import requests


url = 'https://en.wikipedia.org/wiki/Category:proprietary software'
content = requests.get(url).content
soup = BeautifulSoup(content, 'lxml')
noOFsubcategories = soup.find('p')

tag = soup.find('div', {'class': 'mw-category'})

links = [[index, a.get_text()] for index, a in enumerate(tag.find_all('a'), start=1)]

with open('subcategories.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerows(links)
运行此代码后,
subcategories.csv
的内容将是:

1,Formerly free software
2,Formerly proprietary software
3,Freeware
4,Oracle software
5,Proprietary cross-platform software
6,Proprietary database management systems
7,Proprietary operating systems
8,Proprietary version control systems
9,Proprietary wiki software
10,Shareware
11,VMware
12,Warez

只要稍作修改,将write放在循环下,每个循环都会写入一个指向文件的链接

counter = 1
for link in links:
    print ( str(counter) + "  " + link.text)
    counter = counter + 1
    with open('subcategories.csv', 'a') as f:
        f.write(link['href'].split(':')[1]+'\n')
输出:

更好:

# do not need to open file in each loop, just put it above loop
counter = 1
with open('subcategories.csv', 'a') as f:
    for link in links:
        print ( str(counter) + "  " + link.text)
        counter = counter + 1
        f.write(link['href']+'\n')

你能更准确地说明这个问题吗。会发生什么?当我在python3中执行上述代码时,输出文件是空的。因此,我发布了上述问题。我通过以下答案解决了这个问题,并作为一名学习者获得了信息。对不起我的英语。除了我的语言外,我从不键入任何内容。但输出文件的第一行如下所示。“F,o,r,m,e,r,l,y,F,r,e,e,s,o,F,t,w,a,r,e”如何避免逗号?@info farmer你确定你使用了
writerows()
?@info farmer我已经用我正在执行的完整代码更新了。希望能有帮助。在过去的一周里,我正在学习python 3。我来自非计算机科学背景。我学习了“enumerate()的使用”,感谢上面的指导。如何在没有“/wiki/Category”的情况下完成上面的内容:“?哇!多么简单!!我曾经用这种方法删除数据。filedata=filedata.replace('/wiki/wiki/Category:','')谢谢!。
counter = 1
for link in links:
    print ( str(counter) + "  " + link.text)
    counter = counter + 1
    with open('subcategories.csv', 'a') as f:
        f.write(link['href'].split(':')[1]+'\n')
/wiki/Category:Formerly_proprietary_software
/wiki/Category:Freeware
/wiki/Category:Oracle_software
/wiki/Category:Proprietary_cross-platform_software
/wiki/Category:Proprietary_database_management_systems
/wiki/Category:Proprietary_operating_systems
/wiki/Category:Proprietary_version_control_systems
/wiki/Category:Proprietary_wiki_software
/wiki/Category:Shareware
/wiki/Category:VMware
/wiki/Category:Warez
# do not need to open file in each loop, just put it above loop
counter = 1
with open('subcategories.csv', 'a') as f:
    for link in links:
        print ( str(counter) + "  " + link.text)
        counter = counter + 1
        f.write(link['href']+'\n')