无法在多维列表中使用 .strip()

Unable to use .strip() in a multidimensional list

我有一个布局如下的多维列表

[['Company Name      ', ['companyemail@email.com']]
['Company Name   ', ['companyemail@email.com','companyemail@email.com']]
['Company Name', ['companyemail@email.com']]
['Company Name          ', ['companyemail@email.com']]]

我需要删除每个项目第一个索引中名称前后的空格。

我已经试过了:

def name_filter(vendors):
    unfiltered=vendors
    filtered=[]
    count=0
    for i in unfiltered:
        filtered = [x.strip(' ') for x in unfiltered[count][0]]
        count+=1
    return filtered

然而,当我打印列表时,除了一个字母外,它没有显示任何内容

我的预期结果是:

[['Company Name', ['companyemail@email.com']]
['Company Name', ['companyemail@email.com','companyemail@email.com']]
['Company Name', ['companyemail@email.com']]
['Company Name', ['companyemail@email.com']]]

问题是您在每个列表的第一项上使用 for 循环,然后去除空格。结果,您得到了单独的字符。在列表理解 中不需要第二个for 循环。只需去除第一个字符串元素并同时附加第二个。 P.S:我还将嵌套列表 vendors 定义为输入,因为我假设这是基于您的代码逻辑的正确输入结构

vendors = [['Company Name      ', ['companyemail@email.com']],
           ['Company Name   ', 
           ['companyemail@email.com','companyemail@email.com']],
           ['Company Name', ['companyemail@email.com']],
           ['Company Name          ', ['companyemail@email.com']]]

def name_filter(vendors):
    unfiltered=vendors
    filtered=[]
    for i in unfiltered:
        print (i)
        filtered.append([i[0].strip(' '), i[1]]) # <--- This is the key line

    return filtered

name_filter(vendors)

# [['Company Name', ['companyemail@email.com']],
#  ['Company Name', ['companyemail@email.com', 'companyemail@email.com']],
#  ['Company Name', ['companyemail@email.com']],
#  ['Company Name', ['companyemail@email.com']]]

我会递归地执行此操作 - 如果每个元素是字符串,则去除它,如果它是列表,则重复:

def recursive_strip(lst):
    return [(elem.strip() if type(elem) == str else recursive_strip(elem)) for elem in lst]

您可能需要考虑列表可以包含的数据类型(以上假定仅字符串或列表)。

你可以在列表推导中做到这一点:

vendors = [['Company Name      ', ['companyemail@email.com']],
           ['Company Name   ', ['companyemail@email.com','companyemail@email.com']],
           ['Company Name', ['companyemail@email.com']],
           ['Company Name          ', ['companyemail@email.com']]]

vendors = [ [company[0].strip(),*company[1:]] for company in vendors ]

供应商中的每个项目本身就是一个列表,您需要输出一个列表,其中第一个项目在理解中被剥离。

您可以使用str.rstrip()

vendors = \
    [['Company Name      ', ['companyemail@email.com']],
    ['Company Name   ', ['companyemail@email.com','companyemail@email.com']],
    ['Company Name', ['companyemail@email.com']],
    ['Company Name          ', ['companyemail@email.com']]]


filtered_vendors = [[vendor[0].rstrip(),vendor[1]] for vendor in vendors]  

我想你忘了逗号

unfiltered = [['Company Name      ', ['companyemail@email.com']], ['Company Name   ', ['companyemail@email.com','companyemail@email.com']], ['Company Name', ['companyemail@email.com']] ,['Company Name          ', ['companyemail@email.com']]]
filtered = []
count=0
text = ''
for i in unfiltered:
    print(i[0])
    test = str((i[0])).strip()
    filtered.append( (str(i)).replace(i[0],test))


print(filtered)
unfiltered = [['Company Name      ', ['companyemail@email.com']], ['Company Name   ', ['companyemail@email.com','companyemail@email.com']], ['Company Name', ['companyemail@email.com']] ,['Company Name          ', ['companyemail@email.com']]]
filtered = []
count=0
text = ''
for i in unfiltered:
    print(i[0])
    test = str((i[0])).strip()
    filtered.append( (str(i)).replace(i[0],test))


print(filtered)


unfiltered = [['Company Name      ', ['companyemail@email.com']], ['Company Name   ', ['companyemail@email.com','companyemail@email.com']], ['Company Name', ['companyemail@email.com']] ,['Company Name          ', ['companyemail@email.com']]]
filtered = []
print(unfiltered)
count=0
text = ''
for i in unfiltered:
    print(i[0])
    test = str((i[0])).strip()
    filtered.append( (str(i)).replace(i[0],test))


print(filtered)
[['Company Name      ', ['companyemail@email.com']], ['Company Name   ', ['companyemail@email.com', 'companyemail@email.com']], ['Company Name', ['companyemail@email.com']], ['Company Name          ', ['companyemail@email.com']]]
Company Name      
Company Name   
Company Name
Company Name          
["['Company Name', ['companyemail@email.com']]", "['Company Name', ['companyemail@email.com', 'companyemail@email.com']]", "['Company Name', ['companyemail@email.com']]", "['Company Name', ['companyemail@email.com']]"]
>>>