Python text Datei einlesen und Zeilenweise auswerten

Gast #4464291
Lesenswert?

Hi,

wie kann ich in Python eine Textdatei einlesen und für jede Zeile 
auswerten. Jede Zeile ist nur ein Name


Einlesen würde ich so:
1
fobj = open("yellow_snow.txt")
2
for line in fobj:
3
    print line.rstrip()
4
fobj.close()


Wie kann ich jetzt sagen, dass jede Zeile String +1 werden soll? Und 
anschliessend automatisert auf Anzahl der importierten "Namen" immer das 
selbe script ausführen soll?

Bsp: print (string_from_txt) # Zeile 1 bis Ende Textfile jedesmal das 
Script ausführen
Gast #4464382
Lesenswert?

Tom schrieb:
> Die Frage ist für alle, die nicht in Deinem Kopf stecken, ziemlich
> konfus ;)

Ich versuche es mal ;)


Die Textdatei sieht so aus, jeder Name eine eigene Zeile.
1
Meier
2
Schmidt
3
Müller


Ich möchte diese Textdatei einlesen und das Script für jede Zeile erneut 
ausführen lassen.
Gast #4465054
Lesenswert?

Sorry, aber ich verstehe es gerade garnicht :-(
1
with open('yellow_snow.txt') as fp:
2
    for line in fp:
3
        print (line.rstrip())
4
        
5
        
6
print ('Herr '+line+' ist im Raum')


Als Eingabedatei steht:
Meier
Schmidt
Müller


Und jetzt sollte die Ausgabe erfolgen:

Herr Meier ist im Raum
Herr Schmidt ist im Raum
Herr Müller ist im Raum


Wie bringe ich dem script bei, dass er jedesmal

print ('Herr '+line+' ist im Raum')

ausführt, bis alle Zeilen aus der yellow_snow.txt einmal ausgeführt 
wurden. Und eben nach jeder Zeile die nächste nimmt?
#4465228
Lesenswert?

Sebastian schrieb:
> Sorry, aber ich verstehe es gerade garnicht :-(

Und ich dein Problem nicht. Geht es dir tatsächlich einfach darum, wie 
du etwas für jede Zeile einmal aufrufst? Das tust du doch bereits:

> with open('yellow_snow.txt') as fp:
>     for line in fp:
>         print (line.rstrip())
          ^^^^^^^^^^^^^^^^^^^^^

Wenn du jetzt stattdessen das da für jede Zeile ausführen willst:

> print ('Herr '+line+' ist im Raum')

Dann mußt du das eben so hinschreiben:

with open('yellow_snow.txt') as fp:
    for line in fp:
        print ('Herr '+line+' ist im Raum')
Gast #4466513
Lesenswert?

Hi,

bei mir ist das so, dass immer nur die erste Zeile aus der importierten 
Datei verwendet wird. Aber dafür wird die Abgfrage direkt 13x 
durchgeführt
1
# coding: utf-8
2
from bs4 import BeautifulSoup 
3
from urllib.request import urlopen
4

5
list_price_de = []
6

7
fobj = open("import.txt")
8
for Shopname in fobj:
9
        
10
    line_count = len(fobj.readlines())
11
  
12

13

14
for ergebnis in Shopname:
15
   
16
    print(Shopname.rstrip())
17
  
18

19
    soup = BeautifulSoup (urlopen("http://www.ebay.de/sch/m.html?_nkw=&_armrs=1&_from=&_clu=2&_fcid=77&_localstpos=&_stpos=&gbr=1&LH_ItemCondition=3&_ssn="+Shopname.rstrip()+"&_ipg=25&_sop=12"), "html.parser")
20
    results = soup.find_all("li", {"class": "lvprice"})
21
    for result in results:
22
        result1 = result.get_text().strip()
23
        result1 = result1.replace('EUR',' ')
24
        list_price_de.append(result1)  
25
        print (result1)
26
else:
27

28
   print("Finally")
29
   
30
fobj.close()
Gast #4466519
Lesenswert?

Oweh, gleich kommt der Fanclub der geschweiften Klammer...

Erst rattert die erste Schleife durch und es wird sinnlos die Länge der 
Datei berechnet:
1
for Shopname in fobj:
2
    line_count = len(fobj.readlines())
Das funktioniert aber nicht, da man readlines() nicht sinnvoll zweimal 
auf der gleichen Datei aufrufen darf.
Weil readlines() den Filepointer aufs Ende setzt, ist die for-Schleife 
nach dem ersten Mal vorbei und Shopname behält den Wert der ersten 
Zeile.


Jetzt wird für jedes Zeichen in Shopname die folgende Schleife 
aufgerufen:
1
for ergebnis in Shopname:
2
    print(Shopname.rstrip())
3
    soup = BeautifulSoup (urlopen("http:/ .......
4
    results = soup.find_all("li", {"class": "lvprice"})
5
    for result in results:
6
        result1 = result.get_text().strip()
7
        result1 = result1.replace('EUR',' ')
8
        list_price_de.append(result1)  
9
        print (result1)
Die Variable ergebnis kommt gar nicht vor. Je nachdem, wie viele Zeichen 
Shopname hat, wird diese Schleife also mit gleichem Inhalt+Ergebnis 
wiederholt.



Wie der Lehrer schrieb: Ohne ein paar Grundlagen geht es nicht. Das 
Zusammenkopieren von unverstandenen Beispielen überlässt man besser den 
12jährigen PHP-Programmierern.

Wenn Schleifenkonstruktionen etc. nicht klar sind, erstmal alles 
überflüssige (beautifulsoup) rauswerfen und Minimalbeispiele mit print 
bauen. Bevor print nicht das gewünschte ausgibt, muss man an urlopen gar 
nicht denken.
1
#!/usr/bin/python3
2
fobj = open('zeilen.txt', 'r')
3
for line in fobj:
4
    print('in der Schleife: ' + line.strip())
5
    foo = fobj.readlines()  # diese Zeile mal auskommentieren
6
# Welchen Wert hat line jetzt?
7
print('Ende:' + line.strip())
Bevor man den Onlinehandel revolutioniert, erstmal ein paar 
Python-Tutorials durcharbeiten und verstehen. Mindestens die Schleifen 
muss man verstanden haben, wenn man irgendwas machen will, das über 
Hello World hinausgeht.
Beitrag #6111705 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.