如何拆分列表中的字符串元素(Python)

时间:2017-03-24 16:36:49

标签: python list split

我是Python的新手,希望你能帮助我。

我有一个名为reviewerdetails的字符串列表,其中包含有关Hostelworld审阅者的信息。在每个字符串中,有三个元素:国家,性别和审稿人的年龄组。例如,第一种情况如下:

'\n                Belgium,                Female,                18-24            '

我想为这三个元素创建三个单独的列表,但我不确定如何在列表中的字符串中选择元素?我尝试了.split函数,但是我收到了错误

AttributeError: 'list' object has no attribute 'split'. 

我发现了这个问题:split elements of a list in python那种尝试做的事情想要我想做,但我不知道如何将答案应用到我的问题中。

5 个答案:

答案 0 :(得分:2)

很遗憾,我们无法在列表推导中使用分配,因此需要在明确的for循环中完成(如果我们不想调用.split并迭代3倍)

li = ['\n                Belgium,                Female,            18- 24           ',
      '\n                Belgium,                Male,              18-24            ']

li = [elem.split() for elem in li]
print(li)
# [['Belgium,', 'Female,', '18-24'], ['Belgium,', 'Male,', '18-24']]
countries, genders, ages = [], [], []
for elem in li:
    countries.append(elem[0])
    genders.append(elem[1])
    ages.append(elem[2])

print(countries)
print(genders)
print(ages)
# ['Belgium,', 'Belgium,']
# ['Female,', 'Male,']
# ['18-24', '18-24']

答案 1 :(得分:1)

这样的事情,使用split并过滤空字符串。

mylist = [x.strip() for x in reviewerdetails.split(" ") if len(x.strip()) > 0];

答案 2 :(得分:0)

尝试使用列表推导:

output = [input[i].split( do whatever you need to in here ) for i in range(len(input))]

split函数是string的成员,而不是list,所以你需要将函数应用于列表中的每个元素,而不是列表本身。

答案 3 :(得分:0)

希望我理解正确,我认为这就是你要做的事情:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native"

答案 4 :(得分:0)

我也是Python的新程序员,所以这可能效率低下。我这样做的方法是有三个清单,一个用于国家,一个用于性别,一个用于年龄范围。然后我会做循环,所以如果国家/地区列表中有[...,'Belgium',...],它就会知道。所以对于每个列表,我会说

for reviewer in reveiwerdetails:
    for country in [country list name]:
        if country in reviewer:
            [list name].append(country)
            break
    for gender in [gender list name]:
        if gender in reviewer:
            [list name].append(gender)
            break
    for agerange in [age range list name]:
        if agerange in reviewer:
            [list name].append(agerange)
            break

这样,您就可以按顺序列出评论者,性别和年龄范围的所有国家/地区。同样,这可能是非常低效的,并且很可能更容易实现它。