Ich habe vier Saiten und jede davon kann leer sein. Ich muss sie zu einer Zeichenfolge mit Leerzeichen dazwischen verbinden. Wenn ich benutze:
new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
Das Ergebnis ist ein Leerzeichen am Anfang der neuen Zeichenfolge, wenn diese string1
leer ist. Außerdem habe ich drei Leerzeichen, wenn string2
und string3
sind leer.
Wie kann ich sie ohne Leerzeichen verbinden, wenn ich sie nicht benötige?
df.apply(", ".join(filter(None, ...)), axis=1)
. Wie übergibt man das zweite Argument der Filterfunktion?Wenn Sie wissen, dass die Zeichenfolgen keine führenden / nachfolgenden Leerzeichen haben:
>>> strings = ['foo','','bar','moo'] >>> ' '.join(x for x in strings if x) 'foo bar moo'
Andernfalls:
>>> strings = ['foo ','',' bar', ' ', 'moo'] >>> ' '.join(x.strip() for x in strings if x.strip()) 'foo bar moo'
und wenn eine der Zeichenfolgen nicht führende / nachfolgende Leerzeichen enthält, müssen Sie möglicherweise noch härter arbeiten. Bitte klären Sie, was Sie tatsächlich haben.
quelle
strings = ['foo','','bar','moo'] ' '.join([x for x in strings if x is not '']) 'foo bar moo'
quelle
!=
stattis not
. Es könnte funktionieren, ist aber nicht garantiert. Oder einfach benutzen[x for x in strings if x]
.is not
für nicht-Singletons , wenn Sie tatsächlich nicht überprüfen möchten , wenn beide die gleichen Objekte sind!