2015-03-10 6 views
5

kann mir jemand sagen, wie kann ich überprüfen, ob eine Zeile mit Zeichenfolge oder Leerzeichen oder Tab beginnt? Ich habe versucht, dies aber nicht funktioniert ..Wie überprüft man, ob eine Zeile in Python mit einem Wort, Tab oder Leerzeichen beginnt?

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

unten ist die samp Daten ..

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"* 

Antwort

8

eine Linie Um zu überprüfen, beginnt mit Leerzeichen oder Tab.

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

\s entspricht auch Newline-Zeichen.

ODER

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

eine Linie Um zu überprüfen, ob es mit einem Wortzeichen beginnt oder nicht.

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

Um eine Zeile zu überprüfen, ob es mit einem Leerzeichen beginnt oder nicht.

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

Beispiel:

>>> 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

'^' ist redundant in 're.match' – avim

+0

yep, aber einige Leute können downvote wegen der nicht mit Anker .. lol // –

+1

Hallo Avinash, danke .. ist da sowieso ich kann die Ausgabe wie folgt. . ich brauche die Unterpositionen an die unten Daten .. Probe anhängen: weiblich 752,9 externe 752,40 angegebenen Typ NEC 752,49 interne NEC 752,9 die endgültige Ausgabe weiblich 752,9 weiblichen äußeren 752,40 äußeren weiblichen angegebenen Typ NEC sein sollte 752.49 –

4

Um zu überprüfen, ob eine Zeile mit einem Leerzeichen oder einer Registerkarte beginnt, können Sie ein Tupel .startswith passieren. Es wird True zurück, wenn die Zeichenfolge mit jedem Element in dem Tupel beginnt:

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

zB:

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

Pavan: Beachten Sie, dass "startswith" keine regulären Ausdrücke oder spezielle Escapes akzeptiert, sondern nur tatsächliche Zeichen, die in Anführungszeichen stehen müssen. –

1

, ob eine Zeile beginnt mit einem Wort oder Tab oder weißen Raum in Python

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

@mgilson bearbeitet jetzt – 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 ' 

Hoffentlich reicht das ohne Erklärung.

Verwandte Themen