Preservando a formatação de texto ao enviar saída para o arquivo csv

0

Eu tenho um executável que fornece uma saída como a seguinte,

Posture state: 3         Posture side: 0   
Posture state: 3         Posture side: 0  
Posture state: 3         Posture side: 0  
Posture state: 3         Posture side: 0  
Posture state: 3         Posture side: 2  
Posture state: 3         Posture side: 2  
Posture state: 3         Posture side: 2  
Posture state: 3         Posture side: 2  
Posture state: 3         Posture side: 2  
Posture state: 3         Posture side: 2  

Eu tentei canalizar a saída para um arquivo csv da seguinte maneira, mas a formatação não é preservada. Mais especificamente - o espaço entre o estado da postura e o lado da postura não é aplicado.

./posture.exe > posture_result_acc5.csv

Eu quero o estado Posture para ir para uma coluna do arquivo csv e postar para a próxima coluna. Como isso pode ser feito?

    
por Naveen 05.03.2015 / 18:02

1 resposta

2

Cole isso em um arquivo e salve-o como posture.py

for line in open('temp.txt','r'):
    a,b,c=line.split(':')
    state=b.replace('Posture side','').replace(' ','')
    side=c.rstrip().replace(' ','')
    print('%s,%s' %(state,side))

E então

./posture.exe > temp.txt
python posture.py > posture_result_acc5.csv

Como funciona.

A saída do seu posture.exe é gravada em um arquivo temporário.

O script Python lê o arquivo temporário uma linha por vez.

Cada linha é dividida em três partes dividindo os dois pontos.

O valor 'state' é o pedaço do meio com os espaços e o 'lado da postura' removido.

O valor "side" é o terceiro pedaço com os espaços e o caractere de nova linha removidos.

Estes são impressos como um par separado por vírgulas.

A saída é redirecionada para o arquivo csv.

Se você quiser as palavras, bem como o valor, altere a última linha do script Python para

print('Posture state: %s,Posture side: %s' %(state,side))
    
por Carl H 06.03.2015 / 15:32