Escrever apenas parte de uma linha para um arquivo
Pergunta
Quero limpar minha saída e escrever apenas parte da linha necessária para um novo arquivo e não toda a linha. Esta é a seção de codificação relevante:
counter = 1
for line in completedataset:
print counter
counter +=1
for t in matchedLines:
if t in line[:line.find(',')]:
smallerdataset.write(line)
break
Aqui está uma amostra dos dados:
NOVE1780418 "," --- "," JAX17054099 "," 5 "," 156323558 ", etc para a linha.
Eu só quero escrever até o número antes da 3ª vírgula. Preciso de ajuda para modificar a linha de gravação apenas para escrever até a terceira vírgula. Esse arquivo é muito grande e espero que qualquer novo código não diminua o programa, mas acelera. Obrigado Bob
Solução
Deve ser tão simples assim ...
for line in infile:
line = line.strip().split(',')
outfile.write(','.join(line[:3]) + '\n')
Outras dicas
for line in infile:
line = line.strip().split(',',3)
outfile.write(','.join(line[:-1]) + '\n')
Se houver a possibilidade de '' aparecer em qualquer um dos campos, você precisará usar o módulo CSV
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow