这只是给我一个字符串中的第一个单词,我需要返回没有数字:
def stripNonLetters(aString):
words=[]
aString=aString.lower()
for word in aString:
if word.isalpha() or word.isspace():
words.append(word)
print(words)
return ''.join(words)
def main():
myString='''Planes and 12 cars.'''
stripNonLetters(myString)
main()
我需要这个回复" ['飞机''''''']",但我'得到" [' \ n',' ',' ',' ',' ',' p',' l',' a',' n',' e', ''"等 我做错了什么?
答案 0 :(得分:0)
执行aString=aString.split()
后,aString
是一个单词列表,其中没有一个包含空格。如果删除该行,则应该没问题:
def stripNonLetters(aString):
answer = ''
for char in aString:
if char.isalpha() or char.isspace():
answer += char
return answer
当然,这需要大量的字符串添加,这是低效的。因此,您可能更倾向于使用它:
def stripNonLetters(aString):
answer = []
for char in aString:
if char.isalpha() or char.isspace():
answer.append(char)
return ''.join(answer)
答案 1 :(得分:0)
使用正则表达式批量处理字符串而不是逐字符处理将更直接(并且通常更有效)。例如:
import re
def stripNonLetters(s):
"""
Strip all non-letter, non-space characters from a string.
Runs of whitespace are normalized ot single space charactes,
except at the start and end, where they are stripped.
"""
s = re.sub(r'[^A-Za-z\s]', '', s.strip())
return re.sub(r'\s+', ' ', s)
s = '''Planes and 12 cars.'''
print stripNonLetters(s).split()
我最后将结果的.split()
分为单词,因为这是一个迟来的要求,因为它超出了名为stripNonLetters
的函数的明显范围。但是,如果您希望函数处理该细分函数,请将拆分操作移动到函数的最后一行,而不是在调用者中进行后处理。