如何使用python将数组中的字符串切片到另一个数组中
我想把一个列表中字符串的某些部分切成另一个列表, 例如,考虑他们的列表数据:如何使用python将数组中的字符串切片到另一个数组中,python,arrays,string,python-3.x,slice,Python,Arrays,String,Python 3.x,Slice,我想把一个列表中字符串的某些部分切成另一个列表, 例如,考虑他们的列表数据: data = ["xbox 360 | 13000 | new","playstation 4 | 30000 | new","playstation 3 | 30000 | old","playstation 2 | 30000 | old"] 我想把每个组件分成三部分 product = ["xbox 360","playstation 4","playstation 3","playstation 2"] co
data = ["xbox 360 | 13000 | new","playstation 4 | 30000 | new","playstation 3 | 30000 | old","playstation 2 | 30000 | old"]
我想把每个组件分成三部分
product = ["xbox 360","playstation 4","playstation 3","playstation 2"]
cost = ["13000","30000","30000","30000"]
condition = ["new","new","old","old"]
请帮助我在适当的分隔符上拆分字符串时,以下使用通用的
zip(*…)
换位模式:
>>> prd, cst, cnd = zip(*(s.split(' | ') for s in data))
>>> prd
('xbox 360', 'playstation 4', 'playstation 3', 'playstation 2')
>>> cst
('13000', '30000', '30000', '30000')
>>> cnd
('new', 'new', 'old', 'old')
下面使用通用的
zip(*…)
transpositioning模式,同时在适当的分隔符上拆分字符串:
>>> prd, cst, cnd = zip(*(s.split(' | ') for s in data))
>>> prd
('xbox 360', 'playstation 4', 'playstation 3', 'playstation 2')
>>> cst
('13000', '30000', '30000', '30000')
>>> cnd
('new', 'new', 'old', 'old')
输出
['xbox 360', 'playstation 4', 'playstation 3', 'playstation 2']
['13000', '30000', '30000', '30000']
['new', 'new', 'old', 'old']
输出
['xbox 360', 'playstation 4', 'playstation 3', 'playstation 2']
['13000', '30000', '30000', '30000']
['new', 'new', 'old', 'old']
您可以循环浏览数据列表,然后拆分每个元素。然后,您可以使用
.append()
将该数据添加到产品
、成本
和条件
列表中:
以下代码的结果:
['xbox 360', 'playstation 4', 'playstation 3', 'playstation 2']
['13000', '30000', '30000', '30000']
['new', 'new', 'old', 'old']
您可以循环浏览数据列表,然后拆分每个元素。然后,您可以使用
.append()
将该数据添加到产品
、成本
和条件
列表中:
以下代码的结果:
['xbox 360', 'playstation 4', 'playstation 3', 'playstation 2']
['13000', '30000', '30000', '30000']
['new', 'new', 'old', 'old']
@surya,您可以尝试以下两种方法中的任何一种。第一个非常简短,只需执行一行语句即可给出所有3个列表。我使用了列表理解和reduce()函数的概念 使用split() 使用strip()删除前导/尾随空格 第一路(单行语句) 只需使用
product,cost,condition=reduce(lambda s1,s2:[s1[index]+[item.strip()]作为索引,枚举中的项(s2.split(“|”)],数据,[[],[],[],[])代码>,它将给出您的列表
第二条路
@surya,您可以尝试以下两种方法中的任何一种。第一个非常简短,只需执行一行语句即可给出所有3个列表。我使用了列表理解和reduce()函数的概念
使用split()
使用strip()删除前导/尾随空格
第一路(单行语句)
只需使用product,cost,condition=reduce(lambda s1,s2:[s1[index]+[item.strip()]作为索引,枚举中的项(s2.split(“|”)],数据,[[],[],[],[])代码>,它将给出您的列表
第二条路
你尝试了什么?你尝试了for循环吗?@surya,你也可以使用列表理解和reduce()方法来完成你的任务,只需使用一行语句products,cost,condition=reduce(lambda s1,s2:[s1[index]+[item.strip()]作为索引,枚举中的项(s2.split('.'))],数据,[],[],[],[])
。你尝试了什么?你尝试了for循环吗?@surya,你也可以使用列表理解和reduce()方法来完成你的任务,只需使用一行语句products,cost,condition=reduce(lambda s1,s2:[s1[index]+[item.strip()]作为索引,枚举中的项(s2.split(“|”)],data,[],[],[])
?map(list,zip(*(s.split(“|”)表示数据中的s))
?啊,是的,我只是用数组作为问题的标记。不过你绝对正确,我会更新我的答案,谢谢:)啊,是的,我只是用数组作为问题的标记。不过你肯定是对的,我会更新我的答案,谢谢:)
>>> data = ["xbox 360 | 13000 | new","playstation 4 | 30000 | new","playstation 3 | 30000 | old","playstation 2 | 30000 | old"]
>>>
>>> product = []
>>> cost = []
>>> condition = []
>>>
>>> for s in data:
... l = [item.strip() for item in s.split("|")]
... product.append(l[0])
... cost.append(l[1])
... condition.append(l[2])
...
>>> product
['xbox 360', 'playstation 4', 'playstation 3', 'playstation 2']
>>>
>>> cost
['13000', '30000', '30000', '30000']
>>>
>>> condition
['new', 'new', 'old', 'old']
>>>
>>>