2017-10-21 36 views
0

Je travaille sur un analyseur Web pour une page Web contenant des constantes mathématiques. J'ai besoin de remplacer quelques caractères afin de l'avoir sur un format spécifique, mais je ne sais pas pourquoi si je l'imprime, je semble fonctionner correctement; mais quand j'ouvre le fichier de sortie, le format obtenu par replace() ne semble pas avoir pris effet.Python: Replace() n'a aucun effet sur l'écriture dans un fichier

C'est le code

#!/usr/bin/env python3 

from urllib.request import urlopen 
from bs4 import BeautifulSoup 

url = "http://www.ebyte.it/library/educards/constants/ConstantsOfPhysicsAndMath.html" 
soup = BeautifulSoup(urlopen(url).read(), "html5lib") 
f = open("ebyteParse-output.txt", "w") 

table = soup.find("table", attrs={"class": "grid9"}) 

rows = table.findAll("tr") 
for tr in rows: 
    # If its a category of constants we write that as a comment 
    if tr.has_attr("bgcolor"): 
     f.write("\n\n# " + tr.find(text=True) + "\n") 
     continue 

    cols = tr.findAll("td") 
    if (len(cols) >= 2): 
     if (cols[0]["class"][0] == "box" or cols[0]["class"][0] == "boxi" and cols[1]["class"][0] == "boxa"): 
      constant = str(cols[0].find(text=True)).replace(" ", "-") 
      value = str(cols[1].find(text=True)) 
      value = value.replace(" ", "").replace("...", "").replace("[", "").replace("]", "") 
      print(constant + "\t" + value) 
      f.write(constant + "\t" + value) 

    f.write("\n") 

f.close() 

C'est ce que l'impression montre:

enter image description here

C'est ce que je reçois sur le fichier de sortie

enter image description here

Merci vous, Salva

+1

Une variable ne peut pas changer sa valeur entre les lignes 'print' et' f.write'. Je suppose que vous regardez le mauvais fichier. – Barmar

Répondre

0

Le fichier que je cherchais était attrapé, donc aucun changement vu. Merci d'avoir répondu