我正在尝试使用BeautifulSoup和Regex来抓取this website。在这样做的同时,我遇到了一个问题,其中包含"双引号"我想替换"双引号"并将其另存为.txt文件。但它并没有取代"双引号"。我们尝试过.replace()方法但是我失败了。代码如下:
url = 'http://www.sanfoundry.com/operating-system-mcqs-process-scheduling-queue/'
r = requests.get(url)
soup = bs(r.content)
data = soup.find_all('div', {'class':'entry-content'})
data1 = data[0].text
pattern = r'^\d{1,2}[\.|\)]([\s|\S].*)|(^[a-z]\)\s.*)|^View Answer\s?(Answer:.*)'
#pattern = r'^\d{1,2}[\.|\)]\s*(.*)|(^[a-z]\)\s.*)|^View Answer\s?(Answer:.*)'
reg = re.compile(pattern)
#with open(r'C:\Users\dhvani\Google Drive\Python\Data Scraping\byb.txt', 'a') as f:
with open(r'C:\Users\Jeri_Dabba\Google Drive\Python\Data Scraping\byb.txt', 'a') as f:
for i in data1.split('\n'):
if reg.search(i).group(1):
y = reg.search(i).group(1)
y = y.replace('"', '')
f.write(y + "\n")
当我检查.txt文件时,"双引号"没有被取代。可能是什么问题?
我是python的新手。
答案 0 :(得分:2)
本网站包含的字符不是正常的'双引号字符,即不是"
U + 0022
该网站包含左右双引号unicode “
”
U + 201C和U + 201D
您可以替换这些:
y = y.replace('"', '')
y = y.replace('“', '')
y = y.replace('”', '')
答案 1 :(得分:1)
我看了一下你想要抓的网站。 是" “被封锁”"您试图替换的双引号的例子?如果是这样,请查看我自己的报价与我从网站上粘贴的报价之间的区别。他们不是同一个角色。
你应该复制/粘贴或找到你想要替换的标点符号的代码,因为对于一个符号,web上有各种各样的字符,而python会在"之间产生差异。和“和”。
因此你应该有类似的东西:
y = y.replace('“', '');
y = y.replace('”', '');
由于这可能不是你唯一的标点符号问题,我建议你做一个包含你想要替换的所有内容的数组,然后在该数组上循环。