Python美丽的汤和正则表达式 - 双引号没有被取代

时间:2016-05-04 07:50:43

标签: python regex beautifulsoup

我正在尝试使用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的新手。

2 个答案:

答案 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('”', '');

由于这可能不是你唯一的标点符号问题,我建议你做一个包含你想要替换的所有内容的数组,然后在该数组上循环。