无法在多维列表中使用 .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']]"]
>>>
我有一个布局如下的多维列表
[['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']]"]
>>>