2015-03-10 15 views
5

qualcuno può dirmi come posso controllare se una linea inizia con una stringa o spazio o scheda? Ho provato a farlo, ma non funziona ..Come verificare se una linea inizia con una parola o una scheda o uno spazio bianco in python?

if line.startswith(\s): 
    outFile.write(line); 

sotto è il dato samp ..

female 752.9 
    external 752.40 
     specified type NEC 752.49 
    internal NEC 752.9 
male (external and internal) 752.9 
    epispadias 752.62" 
    hidden penis 752.65 
    hydrocele, congenital 778.6 
    hypospadias 752.61"* 

risposta

8

Per controllare una linea inizia con spazio o tab.

if re.match(r'\s', line): 

\s corrisponde anche a carattere di fine riga.

O

if re.match(r'[ \t]', line): 

Per controllare una linea che inizia con un carattere di parola o meno.

if re.match(r'\w', line): 

Per verificare una riga se inizia con un carattere non spaziale oppure no.

if re.match(r'\S', line): 

Esempio:

>>> re.match(r'[ \t]', ' foo') 
<_sre.SRE_Match object; span=(0, 1), match=' '> 
>>> re.match(r'[ \t]', 'foo') 
>>> re.match(r'\w', 'foo') 
<_sre.SRE_Match object; span=(0, 1), match='f'> 
>>> 
+0

'^' è ridondante in 're.match' – avim

+0

sì, ma alcune persone possono downvote a causa di non utilizzare ancora .. lol // –

+1

Hi Avinash, grazie .. c'è qualche cosa che posso ottenere l'output come di seguito. . devo aggiungere i sottotitoli ai dati indicati .. esempio: femmina 752,9 esterno 752,40 tipo specificato NEC 752,49 NEC interno 752,9 l'output finale dovrebbe essere femmina 752,9 femminili esterni 752,40 femminili esterni tipo specificato NEC 752.49 –

4

per verificare se una linea inizia con uno spazio o una scheda, si può passare una tupla a .startswith. Tornerà True se la stringa inizia con qualsiasi elemento nella tupla:

if line.startswith((' ', '\t')): 
    print('Leading Whitespace!') 
else: 
    print('No Leading Whitespace') 

es:

>>> ' foo'.startswith((' ', '\t')) 
True 
>>> ' foo'.startswith((' ', '\t')) 
True 
>>> 'foo'.startswith((' ', '\t')) 
False 
+1

Pavan: nota che "startswith" non accetta espressioni regolari o escape speciali, solo caratteri reali, che devono essere tra virgolette. –

1

se una linea inizia con una parola o scheda o spazio bianco in pitone

if re.match(r'[^ \t].*', line): 
    print "line starts with word" 
+0

@mgilson edited.wont ora – vks

2
from string import whitespace 

def wspace(string): 
    first_character = string[0] # Get the first character in the line. 
    return True if first_character in whitespace else False 

line1 = '\nSpam!' 
line2 = '\tSpam!' 
line3 = 'Spam!' 

>>> wspace(line1) 
True 
>>> wspace(line2) 
True 
>>> wspace(line3) 
False 

>>> whitespace 
'\t\n\x0b\x0c\r ' 

Speriamo che questo sia sufficiente senza spiegazione.

Problemi correlati