2016-05-04 13 views
-1

Ich versuche, this website mit BeautifulSoup und Regex zu kratzen. Dabei stieß ich auf eine Frage, die "doppelte Anführungszeichen" hatte, und ich wollte die "doppelten Anführungszeichen" ersetzen und es als TXT-Datei speichern. Aber es ersetzt nicht die "doppelten Anführungszeichen". Wir haben versucht, .replace() -Methode, aber ich habe es versäumt. Der Code ist wie folgt:Python Schöne Suppe und Regex - doppelte Anführungszeichen nicht ersetzt

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") 

Als ich die TXT-Datei überprüft wurde die "doppelte Anführungszeichen" nicht ersetzt. Was könnte das Problem sein?

Ich bin neu in Python.

+0

Wenn Sie bereits habe einfachen Text, auf dem du die Regex ablegst, bitte poste es hier. –

Antwort

1

Diese Website enthält Zeichen, die nicht 'normal' doppelten Anführungszeichen sind also nicht " U + 0022

Die Seite rechts und links doppelte Anführungszeichen enthält markiert Unicode U + 201C und U + 201D

Sie können diese ersetzen:

y = y.replace('"', '') 
y = y.replace('“', '') 
y = y.replace('”', '') 
+0

Vielen Dank. Es funktionierte. – Jeril

1

ich auf der Website einen Blick nahm Sie zu kratzen versuchen. Ist "" Blocked "" ein Beispiel für doppelte Anführungszeichen, die Sie ersetzen möchten? Wenn ja, schau dir den Unterschied zwischen meinem eigenen Zitat und den Exemplaren an, die ich von der Website kopiert habe. Sie sind nicht die gleichen Charaktere.

Sie sollten den Code der Interpunktionszeichen, die Sie ersetzen möchten, kopieren/einfügen oder finden, da für ein Zeichen eine Vielzahl von Zeichen im Web verwendet wird und Python einen Unterschied zwischen "und" und " .

Daher sollen Sie so etwas wie haben:

y = y.replace('“', ''); 
y = y.replace('”', ''); 

Da dies wahrscheinlich nicht Interpunktionszeichen, Ihr einziges Problem, ich schlage vor, Sie mit allem, was einen Array wollen Sie auf der Schleife ersetzen und dann Array