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

Python Strip()函数没有从字符串中删除剩余空间,python,string,strip,Python,String,Strip,我试图从字符串列表中仅查找不同的项,该字符串具有由“;”分隔的不同项,但它没有为其中一个项剥离剩余空间,因此我接收到重复项 gender_distinct = [] survey_genders = ['Male', 'Female', 'Other', 'Male; Other', 'Gender non-conforming', 'Male; Gender non-conforming', 'Female; Transgender', 'Transgender', 'Female; Gend

我试图从字符串列表中仅查找不同的项,该字符串具有由“;”分隔的不同项,但它没有为其中一个项剥离剩余空间,因此我接收到重复项

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=[]
调查性别=[‘男性’、‘女性’、‘其他’、‘男性’、‘性别不合规’、‘男性’、‘性别不合规’、‘女性’、‘变性人’、‘女性’、‘性别不合规’、‘男性’、‘变性人’、‘变性人’、‘女性’、‘性别不合规’、‘男性’、‘变性人’、‘性别不合规’,“男性;女性;变性人;性别不符合”“男性;女性;变性人”“性别不符合;其他”“男性;变性人;性别不符合”“男性;性别不符合;其他”“男性;女性;其他”“男性;女性;性别不符合”“女性;性别不符合;其他”“变性人;其他”“女性;变性人;性别不合规;其他“,”男性;女性;变性人;其他“,”男性;女性;性别不合规;其他“,
‘女性;其他’、‘女性;变性人;其他’、‘男性;变性人;其他’]
对于列表中的性别(调查性别):
对于性别中的每个性别。拆分(“;”):
gender_each=gender_each.strip()
如果性别不在性别区分中:
打印(每个性别)
性别区分。追加(每个性别)
印刷品(“不同性别”)
印刷品(性别不同)
现在,在Python中,如果您想要一个容器来保存每个项目的一个副本,那么使用
比使用
列表
更容易:

...
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)

在进行容器测试时,您正在应用strip(即
if
语句),但您没有保留字符串的剥离版本,而是将未剥离的版本添加到最终列表中

只需将代码更改为:

gender_distinct=[]
调查性别=[‘男性’、‘女性’、‘其他’、‘男性’、‘性别不合规’、‘男性’、‘性别不合规’、‘女性’、‘变性人’、‘女性’、‘性别不合规’、‘男性’、‘变性人’、‘变性人’、‘女性’、‘性别不合规’、‘男性’、‘变性人’、‘性别不合规’,“男性;女性;变性人;性别不符合”“男性;女性;变性人”“性别不符合;其他”“男性;变性人;性别不符合”“男性;性别不符合;其他”“男性;女性;其他”“男性;女性;性别不符合”“女性;性别不符合;其他”“变性人;其他”“女性;变性人;性别不合规;其他“,”男性;女性;变性人;其他“,”男性;女性;性别不合规;其他“,
‘女性;其他’、‘女性;变性人;其他’、‘男性;变性人;其他’]
对于列表中的性别(调查性别):
对于性别中的每个性别。拆分(“;”):
gender_each=gender_each.strip()
如果性别不在性别区分中:
打印(每个性别)
性别区分。追加(每个性别)
印刷品(“不同性别”)
印刷品(性别不同)
现在,在Python中,如果您想要一个容器来保存每个项目的一个副本,那么使用
比使用
列表
更容易:

...
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 = []
...
gender = 'Female; Transgender'
for gender_each in gender.split(';'):
这将体现“女性”、“变性人”三大价值观。 我们将关注第二个值

    if gender_each.strip() not in gender_distinct:
…事实并非如此,因为这是我们第一次看到变性人,不管有没有空间

        print(gender_each)
        gender_distinct.append(gender_each)
正如您的
打印
所示,
gender\u每个
都没有更改;它仍然有前导空格!因此,这就是您附加的版本。稍后,当您使用简单的“Transgender”时,也会添加该版本

要解决这个问题,只需存储
条带的结果
,并在循环的其余部分使用该值——不要养成更改循环变量的习惯。此外,您可以轻松地使用
来保留这些标签

gender_distinct = set()
...
for gender_each in gender.split(';'):
    stripped = gender_each.strip()
    gender_distinct.add(stripped):
    print(stripped)

仅考虑一个问题案例,
男性;变性人;其他

gender_distinct = []
...
gender = 'Female; Transgender'
for gender_each in gender.split(';'):
这将体现“女性”、“变性人”三大价值观。 我们将关注第二个值

    if gender_each.strip() not in gender_distinct:
…事实并非如此,因为这是我们第一次看到变性人,不管有没有空间

        print(gender_each)
        gender_distinct.append(gender_each)
正如您的
打印
所示,
gender\u每个
都没有更改;它仍然有前导空格!因此,这就是您附加的版本。稍后,当您使用简单的“Transgender”时,也会添加该版本

要解决这个问题,只需存储
条带的结果
,并在循环的其余部分使用该值——不要养成更改循环变量的习惯。此外,您可以轻松地使用
来保留这些标签

gender_distinct = set()
...
for gender_each in gender.split(';'):
    stripped = gender_each.strip()
    gender_distinct.add(stripped):
    print(stripped)
更正代码:

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)
更正代码:

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)

strip()
不会在适当的位置更改字符串。字符串是不可变的。因此,如果gender\u each.strip()
生成一个新字符串,但不会更改原始字符串。这是否回答了您的问题?
strip()
不会在适当的位置更改字符串。字符串是不可变的。因此,如果gender\u each.strip(),则此
生成一个新字符串,但不会更改原始字符串
生成一个新字符串,但它不会更改原始字符串。这是否回答了您的问题?虽然在这种情况下,最好只在gender.split(“;”)中使用
来表示性别。split(“;”)
只需注意设置的示例可能是:
gender\u distinct={调查中的性别(调查中的性别)表示性别。split(“;”)}}
我不希望依靠“;”后面的空格来表示,因为这本质上是一个风格问题,而且很容易被错误键入(跳过或键入两次),如果