如何过滤字母字符的字符串?
这只是给我的第一个字一个字符串,我需要没有数字返回:如何过滤字母字符的字符串?
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()
我需要这个返回“[‘飞机’,‘和’,‘汽车’]”,但我'''''','','','p','l','a','n','e','s''等 我究竟做错了什么?
做完之后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)
我得到了错误“str对象没有属性追加” – 2014-10-27 19:04:30
@JoeyCartella:哎呀!我在复制粘贴中发生错误。现在修正 – inspectorG4dget 2014-10-27 19:45:18
连接似乎没有做任何事情,因为当我摆脱它时,我得到了相同的输出。字符串中的字母单独显示而不是以原始单词显示。 – 2014-10-27 21:05:41
这将是更直接的(而且往往更有效)使用正则表达式来处理字符串散装的,而不是字符一个字符。例如:
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()
部门,因为这是一个后期陈述要求,因为它超越了功能的明显职权范围称为。但是如果您希望函数处理该细分函数,请将拆分操作移至函数的最后一行,而不是在调用方中进行后期处理。
第一个符合条件的'返回'(注意:应该是带有圆括号的'word.isalpha()'),所以'for'循环的其余部分永远不会运行。 – jonrsharpe 2014-10-27 18:44:19