Seite 1 von 1
Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 12:06
von Alfons Mittelmeyer
Code: Alles auswählen
a = 'aaa bbb ccc'
b = a.split(' ')
c = []
for i in b:
if i:
c.append(i)
d = tuple(c)
print(d)
Das scheint mir ein wenig umständlich zu sein, oder?
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 12:17
von Üpsilon
Ohne Gewähr:
d = tuple(i for i in a.split() if i)
Übrigens: wenn man bei split nix übergibt, trennt es an allen Whitespace.
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 12:24
von Alfons Mittelmeyer
@Üpsilon: danke.
Ich hatte dann übrigens das gefunden:
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 12:40
von snafu
Einfach tuple(s.split()) reicht auch.
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 14:57
von noisefloor
Hallo,
[codebox=pycon file=Unbenannt.txt]>>> a = 'aaa bbb ccc'
>>> tuple(x for x in a if x!=' ')
('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c')
>>>
[/code]
Setzt aber voraus, dass zwischen den Buchstaben tatsächlich nur Leerzeichen sind (und keine Tabs etc.)
Gruß, noisefloor
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 15:09
von Sirius3
@noisefloor: die einzelnen Wörter sollen schon noch zusammenbleiben. Dein Problem läßt sich mit isspace lösen:
Code: Alles auswählen
from itertools import filterfalse
text = "aaa bbb\tccc"
tuple(filterfalse(str.isspace, text))
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 19:43
von Alfons Mittelmeyer
snafu hat geschrieben:Einfach tuple(s.split()) reicht auch.
Danke, funktioniert prima:
Code: Alles auswählen
if 'minsize' in kwargs:
minsize = kwargs.pop('minsize')
if isinstance(minsize,str):
minsize = minsize.split()
self.minsize(*minsize)
Jetzt möchte ich aber noch etwas anderes wissen. Ich habe einen String, da könnten nur white spaces drin sein und ich möchte wissen, ob der String nur white spaces enthält.
Da doch
re. nehmen, oder braucht man das da auch nicht?
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 19:50
von Sirius3
@Alfons Mittelmeyer: da gibt es vieles: das offensichtliche `txt.isspace()`, aber auch exotisches wie `bool(txt.strip())` oder `bool(txt.split())`.
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 19:56
von Alfons Mittelmeyer
Sirius3 hat geschrieben:@Alfons Mittelmeyer: da gibt es vieles: das offensichtliche `txt.isspace()`, aber auch exotisches wie `bool(txt.strip())` oder `bool(txt.split())`.
Danke Sirius3, txt.isspace() klingt gut, habe ich hier aber nicht gefunden:
https://docs.python.org/2/library/string.html
Re: Wie schreibt man das mit Generator?
Verfasst: Freitag 9. Juni 2017, 20:03
von noisefloor
Hallo,
du guckst auch falsch. Das ist bei den Methoden von Strings dokumentiert (
https://docs.python.org/2/library/stdty ... ng-methods) - du hast den String Operations geschaut.
Gruß, noisefloor
Re: Wie schreibt man das mit Generator?
Verfasst: Samstag 10. Juni 2017, 16:20
von Alfons Mittelmeyer
@noisefloor: Danke