Forum: PC-Programmierung Python String teilen für export zu Excel


von Maxy (Gast)


Lesenswert?

Hi,

ich muss euch leider nochmal nerven.

Ich versuche aus einer Webseite ein paar Daten zu holen und diese in 
einer Excel zu speichern. Zum Teil geht das auch. In der Excel wird mir 
das leider falsch dargestellt.
1
# coding: utf-8
2
import csv
3
import xlsxwriter
4
from bs4 import BeautifulSoup 
5
from urllib.request import urlopen
6
7
8
soup = BeautifulSoup (urlopen("pfad zur url"), "html.parser")
9
  
10
11
results = soup.find_all("li", {"class": "lvlg"})
12
for result in results:
13
   result1 = result.get_text().strip() 
14
   result1_new = result1.replace('000', '1')
15
   #print([result1_new])  
16
   list_lvlg.append(result1_new)
17
   str1 = ''.join(list_lvlg)
18
    #print (str1)
19
   
20
   
21
  
22
  
23
  #Ausgabe xlsx
24
   
25
workbook = xlsxwriter.Workbook('demo.xlsx')
26
worksheet = workbook.add_worksheet("DE")
27
28
29
worksheet.write_string(0, 0, str1)
30
31
32
workbook.close()

In Excel wird alles in einer Zelle dargestellt.
1
98 79 39 79 29 79

Ich möchte das allerdings untereinader mit Zeilenumbruch haben
1
98 
2
79 
3
39 
4
79 
5
29 
6
79

von Rolf M. (rmagnus)


Lesenswert?

Maxy schrieb:
> Ich möchte das allerdings untereinader mit Zeilenumbruch haben

Also du willst es schon in einer Zelle haben, aber mehrzeilig? Dann wäre 
mein erster Versuch, den gewünschten Zeilenumbruch auch in den String 
reinzuschreiben.

   str1 = '\n'.join(list_lvlg)

von Maxy (Gast)


Lesenswert?

Nicht in einer Zelle. Habe mich da falsch ausgedrückt.

Jede Zahl in einer eigenen Zelle aber untereinander

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

dann nützt es nix den String erst zusammenzufassen. Die write_string 
funktion musst du für jede Zahl aufrufen und die Zeile, ich nehme mal an 
das die ersten 2 Parameter Zeile & Spalte sind, weiterzählen.

Sascha

von Maxy (Gast)


Lesenswert?

Hi,

genau darum geht es, dass ich nicht weiß wie ich das machen soll.

von Rolf M. (rmagnus)


Lesenswert?

So etwas in dieser Richtung sollte das tun:
1
index = 0
2
for entry in list_lvlg:
3
    worksheet.write_string(0, index, entry)
4
    index = index + 1

von Maxy (Gast)


Lesenswert?

Hi,

danke schon mal für deine Hilfe. Ein Fortschritt ist schon mal da. Es 
werden jetzt alle Ergebnisse in eine eigene Zelle gepackt. Aber leider 
nebeneinander und nicht untereinander.

Kannst du mir noch einen Trick verraten wie die Zellen untereinander 
ausgegeben werden?

von Rolf M. (rmagnus)


Lesenswert?

Wie wäre es mal mit selber etwas nachdenken?

Ich hatte angenommen, dass worksheet.write_string() als ersten Parameter 
die Spalte, als zweiten die Zeile haben will, also x, y. Ganz 
offensichtlich sind die aber vertauscht, also kommt zuerst y, dann x. 
Nun überleg mal, was man ändern müsste, um das zu bewerkstelligen.

von Maxy (Gast)


Lesenswert?

Ja, jetzt habe ich es auch... Habe mir erstmal einen Kaffe geholt
1
worksheet.write_string(index, 0, entry)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.