2016-01-19 2 views
3

J'ai actuellement la ligne de code suivante pour une entrée:Comment coller plusieurs lignes de texte en entrée python

rawdata = raw_input('please copy and paste your charge discharge data') 

Lorsque vous utilisez l'interface graphique Enthoughts avec ipython et j'exécuter mon script, je peux copier et coller du texte préformaté bien qui tire avec le \ t et \ n. Lorsque vous essayez de coller des données dans une version de style terminal du script, il essaie cependant de traiter chaque ligne de données plutôt que de l'accepter en bloc. De l'aide?

Plus pertinentes lignes de code:

rawed = raw_input('Please append charge data here: ')  
    time, charge = grab_and_sort(rawed) 

def grab_and_sort(rawdata): 

    rawdata = rawdata.splitlines() 
    ex = [] 
    why = [] 

    for x in range(2 , len(rawdata)): 
     numbers = rawdata[x].split('\t') 
     ex.append(numbers[0]) 
     why.append(numbers[1]) 

    ex = array(ex)  
    why = array(why) 

    return (ex, why) 
+1

Une ligne vide, un mot d'arrêt, quelque chose comme ça? – TigerhawkT3

+0

Ajout de quelques données supplémentaires. Je ne sais pas comment il sait arrêter de lire l'entrée? –

+0

'raw_input' et' input' cessent d'attendre la saisie au clavier sur un caractère de retour à la ligne, ce que vous obtenez en appuyant sur Entrée. Cette nouvelle ligne n'est pas incluse dans la sortie. Si vous souhaitez que vos données incluent des caractères de nouvelle ligne, vous devrez déterminer comment vous voulez que le programme arrête d'attendre l'entrée, puis demander au programme de continuer à demander la saisie jusqu'à ce que cette condition soit remplie. – TigerhawkT3

Répondre

3

raw_input accepte toute entrée jusqu'à ce qu'un nouveau personnage est entré à l'.

La façon la plus simple de faire ce que vous lui demandez d'accepter plus d'entrées, jusqu'à ce qu'une fin de fichier soit rencontrée.

print("please copy and paste your charge discharge data.\n" 
     "To end recording Press Ctrl+d on Linux/Mac on Crtl+z on Windows") 
lines = [] 
try: 
    while True: 
     lines.append(raw_input()) 
except EOFError: 
    pass 
lines = "\n".join(lines) 

Ensuite, faites quelque chose avec tout le lot de texte. Comment sait-il quand arrêter la lecture d'entrée?

+1

Ctrl-D n'arrête pas l'entrée dans mon shell. – TigerhawkT3

+0

Quelle coque utilisez-vous? –

+0

Essayé à la fois sur cmd et Powershell. – TigerhawkT3