我有一个列表a
。
a = ["I am (John) and my age is 19" , "I am (Tom) and my age is 19", "I am (Ken) and my age is 20"].
我想要另一个只包含名称
的列表b
b= ["John", "Tom", "Ken"]
任何人都可以帮我吗?我曾经使用过拆分,但不确定如何获得这些。
答案 0 :(得分:2)
我建议编写一个小函数来从字符串中提取带括号的子字符串,然后将该函数应用于列表中的每个元素。您需要进行一些灵魂搜索,以确定您是否满意,假设列表中的每个字符串中始终只有一个带括号的子字符串,因为这将决定函数的编写方式和返回的内容,但是一旦你写完这个功能就很容易了:
list b = [extract_parenthesized_substring(s) for s in a]
extract_parenthesized_substring
的定义留作原始海报的练习。
答案 1 :(得分:1)
列表是使用[]
创建的,而不是{}
。
使用split
不是必需的,您可以使用.index()
在字符串中查找"("
和")"
的位置(假设只有一个带括号的子字符串)并且使用它们创建子字符串:
a = ["I am (John) and my age is 19" , "I am (Tom) and my age is 19", "I am (Ken) and my age is 20"]
b=[]
for string in a:
name=string[string.index("(")+1:string.index(")")]
b.append(name)
或者您可以将其写为list comprehension
:
b=[string[string.index("(")+1:string.index(")")] for string in a]
输出:
['John', 'Tom', 'Ken']