Eu tenho a saída de um comando em forma de tabela. Estou analisando essa saída de um arquivo de resultado e armazenando-a em uma string. Cada elemento em uma linha é separado por um ou mais caracteres de espaço em branco, portanto, estou usando expressões regulares para corresponder a 1 ou mais espaços e dividi-lo. No entanto, um espaço está sendo inserido entre cada elemento:
>>> str1="a b c d" # spaces are irregular
>>> str1
'a b c d'
>>> str2=re.split("( )+", str1)
>>> str2
['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!!
Existe uma maneira melhor de fazer isso?
Após cada divisão str2
é anexada a uma lista.
'str2'
str1.split()
. Não há necessidade de uma regex.Respostas:
Ao usar
(
,)
você está capturando o grupo; se você simplesmente removê-los, não terá esse problema.No entanto, não há necessidade de regex,
str.split
sem que nenhum delimitador especificado o divida por espaço em branco para você. Esta seria a melhor maneira neste caso.Se você realmente queria regex, pode usá-lo (
'\s'
representa espaço em branco e é mais claro):ou você pode encontrar todos os caracteres que não sejam espaços em branco
fonte
str.split
é definitivamente o melhor: D['', 'a', 'b', 'c', 'de', '']
str1.split()
string.split()
é uma opção. Eu estava perguntando se isso poderia ser feito com regex também?re.findall
opção?O
str.split
método removerá automaticamente todo o espaço em branco entre os itens:Os documentos estão aqui: http://docs.python.org/library/stdtypes.html#str.split
fonte
str.split()
é provavelmente a melhor escolha para algo tão leve como esse.Quando você usa
re.split
e o padrão de divisão contém grupos de captura, os grupos são retidos na saída. Se você não quiser isso, use um grupo que não captura.fonte
str.split
é provavelmente melhor para o seu exemplo. Eu só queria explicar por que você consegue o comportamento que faz.É muito simples, na verdade. Tente o seguinte:
fonte
stringToSplit.split()