繁体   English   中英

Strip() function 没有从字符串中删除剩余空间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM