2017-03-15 2 views
1

Zum Beispiel möchte ich True zurückgeben, wenn die Zeichenfolge Kleinbuchstaben ist, und enthält nur alphabetische Zeichen (mit Ausnahme der mathematischen Operatoren).Ist es möglich, isalpha() in einer mathematischen Zeichenfolge zu verwenden und trotzdem True in Python zurückzugeben?

Zum Beispiel: 'x' ist wahr, 'X' Falsch ist, 'x+y'# here's where it doesn't work Wahr ist.

Mein aktueller Zustand ist:

if not str.islower() or not str.isalpha(): 
    return False 

Wenn ich x+y tun, es ist alles lower ist, aber die Saite ist nicht alpha. Ich möchte einen Weg zu ignore der Standard-Mathe-Operatoren: +, -, * seit dieser ist ein math Ausdruck. Ist das ohne viel Code möglich?

+0

Sie müssen irgendwo eine weitere Bedingung hinzuzufügen: 'jedes (char in str für char in "+ - *")'. – DyZ

+0

Ich weiß nicht wirklich komprimiert für Schleifen, können Sie es erweitern? –

+0

Wenn Sie "Listenverständnis" meinen, warum lesen Sie dann nicht darüber? OP ist keine Nachhilfeseite. – DyZ

Antwort

0

können Sie regex verwenden:

import re 
return bool(re.fullmatch(r'[a-z*/+-]+', 'x+y')) 
0

Sie regex verwenden können, und schalten Sie Ihren Code:

import re 
p = re.compile('^[a-z+*/-]+$') 
return p.match(str) 
0

[...] Ich Getreu zurückkehren wollen, wenn die Zeichenfolge ist alles Kleinbuchstaben und enthält nur alphabetische Zeichen (mit Ausnahme von mathematischen Operatoren).

def is_valid_string(string, operators): 
    string = ''.join([c for c in string if c not in operators]) 
    return all(c.isalpha() and c.lower() for c in string) 

Und es verwendet wie so könnte:

Meiner Meinung nach die einfachste Lösung wäre einfach Ihre eigene Funktion machen

if is_valid_string(str): 
    # code 

Auf diese Weise können Sie ganz einfach Passen Sie an, welche Operatoren ignoriert werden und welche nicht.

0
import string 
comp = string.ascii_lowercase + "+-/*" 

Dann gültige Ersatz ist:

if not all([False for char in str if char not in comp]): 
    return False 

verwendet einen Satz in für jedes Zeichen, und baut nur eine Liste auf Ausfälle (schnell für gute Spiele).

Als Funktion:

def valid(string): 
    comp = string.ascii_lowercase + "+-/*" 
    return all([False for char in str if char not in comp]) 
Verwandte Themen