用()拆分Python

时间:2017-01-08 07:08:28

标签: python split

我有一个列表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"] 

任何人都可以帮我吗?我曾经使用过拆分,但不确定如何获得这些。

2 个答案:

答案 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']