[英]Strip() function is not removing left space from the string
我试图从字符串列表中仅找到不同的项目,该字符串具有由“;”分隔的不同项目,但它没有剥离其中一个项目的剩余空间,因此我收到了重复的项目。
gender_distinct = []
survey_genders = ['Male', 'Female', 'Other', 'Male; Other', 'Gender non-conforming', 'Male; Gender non-conforming', 'Female; Transgender', 'Transgender', 'Female; Gender non-conforming', 'Male; Female', 'Male; Female; Transgender; Gender non-conforming; Other', 'Transgender; Gender non-conforming', 'Male; Transgender', 'Female; Transgender; Gender non-conforming', 'Male; Female; Transgender; Gender non-conforming', 'Male; Female; Transgender', 'Gender non-conforming; Other', 'Male; Transgender; Gender non-conforming', 'Male; Gender non-conforming; Other', 'Male; Female; Other', 'Male; Female; Gender non-conforming', 'Female; Gender non-conforming; Other', 'Transgender; Other', 'Female; Transgender; Gender non-conforming; Other', 'Male; Female; Transgender; Other', 'Male; Female; Gender non-conforming; Other',
'Female; Other', 'Female; Transgender; Other', 'Male; Transgender; Other']
for gender in list(survey_genders):
for gender_each in gender.split(';'):
if gender_each.strip() not in gender_distinct:
print(gender_each)
gender_distinct.append(gender_each)
print(" Distinct Gender ")
print(gender_distinct)
您在进行包含测试时应用了 strip - if
语句 - 但您不保留字符串的剥离版本 - 并将版本添加到最终列表中而不剥离。
只需将您的代码更改为:
gender_distinct = []
survey_genders = ['Male', 'Female', 'Other', 'Male; Other', 'Gender non-conforming', 'Male; Gender non-conforming', 'Female; Transgender', 'Transgender', 'Female; Gender non-conforming', 'Male; Female', 'Male; Female; Transgender; Gender non-conforming; Other', 'Transgender; Gender non-conforming', 'Male; Transgender', 'Female; Transgender; Gender non-conforming', 'Male; Female; Transgender; Gender non-conforming', 'Male; Female; Transgender', 'Gender non-conforming; Other', 'Male; Transgender; Gender non-conforming', 'Male; Gender non-conforming; Other', 'Male; Female; Other', 'Male; Female; Gender non-conforming', 'Female; Gender non-conforming; Other', 'Transgender; Other', 'Female; Transgender; Gender non-conforming; Other', 'Male; Female; Transgender; Other', 'Male; Female; Gender non-conforming; Other',
'Female; Other', 'Female; Transgender; Other', 'Male; Transgender; Other']
for gender in list(survey_genders):
for gender_each in gender.split(';'):
gender_each = gender_each.strip()
if gender_each not in gender_distinct:
print(gender_each)
gender_distinct.append(gender_each)
print(" Distinct Gender ")
print(gender_distinct)
现在,在 Python 中,如果您想要一个容器来保留每个项目的一个副本,那么使用set
比使用list
更容易:
...
gender_distinct = set()
for gender in list(survey_genders):
for gender_each in gender.split(';'):
gender_distinct.add(gender_each.strip())
print(" Distinct Gender ")
print(gender_distinct)
更正的代码:
gender_distinct = []
survey_genders = ['Male', 'Female', 'Other', 'Male; Other', 'Gender non-conforming', 'Male; Gender non-conforming', 'Female; Transgender', 'Transgender', 'Female; Gender non-conforming', 'Male; Female', 'Male; Female; Transgender; Gender non-conforming; Other', 'Transgender; Gender non-conforming', 'Male; Transgender', 'Female; Transgender; Gender non-conforming', 'Male; Female; Transgender; Gender non-conforming', 'Male; Female; Transgender', 'Gender non-conforming; Other', 'Male; Transgender; Gender non-conforming', 'Male; Gender non-conforming; Other', 'Male; Female; Other', 'Male; Female; Gender non-conforming', 'Female; Gender non-conforming; Other', 'Transgender; Other', 'Female; Transgender; Gender non-conforming; Other', 'Male; Female; Transgender; Other', 'Male; Female; Gender non-conforming; Other',
'Female; Other', 'Female; Transgender; Other', 'Male; Transgender; Other']
for gender in list(survey_genders):
for gender_each in gender.split(';'):
if gender_each.strip() not in gender_distinct:
print(gender_each)
gender_distinct.append(gender_each.strip())
print(" Distinct Gender ")
print(gender_distinct)
只考虑一个问题案例, Male; Transgender; Other
Male; Transgender; Other
gender_distinct = []
...
gender = 'Female; Transgender'
for gender_each in gender.split(';'):
这将采用“女性”、“跨性别”三个值。 我们将关注第二个值
if gender_each.strip() not in gender_distinct:
...事实并非如此,因为这是我们第一次看到Transgender
,无论有没有空格。
print(gender_each)
gender_distinct.append(gender_each)
正如您的print
所示, gender_each
没有改变; 它仍然具有领先的空间,因此。 那就是你 append 的版本,后来,当你得到简单的“变性”时。 这也被添加了。
要解决此问题,只需存储strip
的结果并将该值用于循环的 rest - 不要养成更改循环变量的习惯。 此外,您可以轻松地使用一set
来保留这些标签。
gender_distinct = set()
...
for gender_each in gender.split(';'):
stripped = gender_each.strip()
gender_distinct.add(stripped):
print(stripped)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.