假设我有一个全名列表,例如:
names : ["Katie von Martin", "Bob Austin Marley", "John Travolta", "Josh Hartnett"]
拆分每个字符串并仅保留第一个单词的函数是什么样的?
def keepFirstName():
for name in names:
????
假设我有一个全名列表,例如:
names : ["Katie von Martin", "Bob Austin Marley", "John Travolta", "Josh Hartnett"]
拆分每个字符串并仅保留第一个单词的函数是什么样的?
def keepFirstName():
for name in names:
????
最简单的是:
def first_names(names):
for name in names:
yield name.split()[0]
例如
>>> print list(first_names(["Katie von Martin", "Bob Austin Marley", "John Travolta", "Josh Hartnett"]))
['Katie', 'Bob', 'John', 'Josh']
在某些情况下,如果您只想要第一个单词,您可能不想拆分字符串……例如,如果字符串真的很长。在这种情况下,您可以使用str.find
来获取字符串中第一个空格的位置,然后您可以切分到该点以仅给您名字:
>>> def first_names(names):
... for name in names:
... idx = name.find(' ')
... yield name[:idx] if idx > 0 else name
...
>>> print list(first_names(["Katie von Martin", "Bob Austin Marley", "John Travolta", "Josh Hartnett"]))
['Katie', 'Bob', 'John', 'Josh']
然而,在实践中,这几乎没有必要。
或者,这会给你第一句话:
>>> names = ["Katie von Martin", "Bob Austin Marley", "John Travolta", "Josh Hartnett"]
>>> first_words = [words.split()[0] for words in names]
>>> print first_words
['Katie', 'Bob', 'John', 'Josh']
要保留它并将其存储在列表中,
b=[]
for i in names:
b.append(i.split()[0])
列表 b 包含名字