我是Python的新手,希望你能帮助我。
我有一个名为reviewerdetails
的字符串列表,其中包含有关Hostelworld审阅者的信息。在每个字符串中,有三个元素:国家,性别和审稿人的年龄组。例如,第一种情况如下:
'\n Belgium, Female, 18-24 '
我想为这三个元素创建三个单独的列表,但我不确定如何在列表中的字符串中选择元素?我尝试了.split
函数,但是我收到了错误
AttributeError: 'list' object has no attribute 'split'.
我发现了这个问题:split elements of a list in python那种尝试做的事情想要我想做,但我不知道如何将答案应用到我的问题中。
答案 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
这样,您就可以按顺序列出评论者,性别和年龄范围的所有国家/地区。同样,这可能是非常低效的,并且很可能更容易实现它。