Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python将数组中的字符串切片到另一个数组中_Python_Arrays_String_Python 3.x_Slice - Fatal编程技术网

如何使用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,[],[],[])
(list,zip(*(s.split(“|”)表示数据中的s))
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']
>>>
>>>