Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_List_Split - Fatal编程技术网

Python 拆分格式化数据列表

Python 拆分格式化数据列表,python,string,list,split,Python,String,List,Split,我有一个列偶数格式的数据列表: ['[ 0.93913063 0.28020878 0.2769496 ]', '[ 0.21672141 0.29633945 0.19763641]', '[ 0.74718183 0.33466203 0.13866566]', '[ 0.1067503 0.20448574 0.16817043]', '[ 0.1223612 0.11653754 0.13288494]', '[ 0.48761208 0.78240743 0

我有一个列偶数格式的数据列表:

['[ 0.93913063  0.28020878  0.2769496 ]',
'[ 0.21672141  0.29633945  0.19763641]',
'[ 0.74718183  0.33466203  0.13866566]',
'[ 0.1067503   0.20448574  0.16817043]',
'[ 0.1223612   0.11653754  0.13288494]',
'[ 0.48761208  0.78240743  0.38697977]',
'[ 0.4300345   0.50380231  0.48102237]']
我想将此数据拆分为如下列表:

[(0.93913063,0.28020878,0.2769496),(0.21672141,0.29633945,0.19763641),(0.74718183,0.33466203,0.13866566),(0.1067503, 0.20448574,0.16817043),(0.1223612,0.11653754,0.13288494),(0.48761208,0.78240743,0.38697977),(0.4300345,0.50380231,0.48102237)]
我遇到的问题是,我要分割数据,然后以我想要的格式将其拼凑在一起,但括号中的值之间没有一致的空格。 这就是我所做的:

def removefront(s):
    return s[2:]
def removeend(s):
    return s[:-2]

valuelist = []
i = 0
for x in xrange(0,len(data)):
    print data[i]
    a,b,d = data[i].split('  ')
    p1 = removefront(a)
    p3 = removeend(d)
    p1 = float(p1)
    p2 = float(b)
    p3 = float(p3)
    coord = (p1, p2, p3)
    i += 1
    valuelist.append(coord)

非常感谢您的帮助。谢谢

您可以在此处将列表理解与一些字符串方法结合使用:

>>> s = ['[ 0.93913063  0.28020878  0.2769496 ]', '[ 0.21672141  0.29633945  0.19763641]', '[ 0.74718183  0.33466203  0.13866566]', '[ 0.1067503   0.20448574  0.16817043]', '[ 0.1223612   0.11653754  0.13288494]', '[ 0.48761208  0.78240743  0.38697977]', '[ 0.4300345   0.50380231  0.48102237]']
>>> [map(float, x.strip('[]').split()) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]
这里
str.strip('[]')
从字符串中删除
[]
,然后在空白处分割数据,然后对每个项应用
float()

另一个选项是将
ast.literal\u eval
与正则表达式一起使用:

>>> import re
>>> from ast import literal_eval
>>> r = re.compile(r'(\d)\s')
>>> [literal_eval(r.sub(r'\1,', x)) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]

您可以在此处将列表理解与一些字符串方法结合使用:

>>> s = ['[ 0.93913063  0.28020878  0.2769496 ]', '[ 0.21672141  0.29633945  0.19763641]', '[ 0.74718183  0.33466203  0.13866566]', '[ 0.1067503   0.20448574  0.16817043]', '[ 0.1223612   0.11653754  0.13288494]', '[ 0.48761208  0.78240743  0.38697977]', '[ 0.4300345   0.50380231  0.48102237]']
>>> [map(float, x.strip('[]').split()) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]
这里
str.strip('[]')
从字符串中删除
[]
,然后在空白处分割数据,然后对每个项应用
float()

另一个选项是将
ast.literal\u eval
与正则表达式一起使用:

>>> import re
>>> from ast import literal_eval
>>> r = re.compile(r'(\d)\s')
>>> [literal_eval(r.sub(r'\1,', x)) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]

您可以在此处将列表理解与一些字符串方法结合使用:

>>> s = ['[ 0.93913063  0.28020878  0.2769496 ]', '[ 0.21672141  0.29633945  0.19763641]', '[ 0.74718183  0.33466203  0.13866566]', '[ 0.1067503   0.20448574  0.16817043]', '[ 0.1223612   0.11653754  0.13288494]', '[ 0.48761208  0.78240743  0.38697977]', '[ 0.4300345   0.50380231  0.48102237]']
>>> [map(float, x.strip('[]').split()) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]
这里
str.strip('[]')
从字符串中删除
[]
,然后在空白处分割数据,然后对每个项应用
float()

另一个选项是将
ast.literal\u eval
与正则表达式一起使用:

>>> import re
>>> from ast import literal_eval
>>> r = re.compile(r'(\d)\s')
>>> [literal_eval(r.sub(r'\1,', x)) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]

您可以在此处将列表理解与一些字符串方法结合使用:

>>> s = ['[ 0.93913063  0.28020878  0.2769496 ]', '[ 0.21672141  0.29633945  0.19763641]', '[ 0.74718183  0.33466203  0.13866566]', '[ 0.1067503   0.20448574  0.16817043]', '[ 0.1223612   0.11653754  0.13288494]', '[ 0.48761208  0.78240743  0.38697977]', '[ 0.4300345   0.50380231  0.48102237]']
>>> [map(float, x.strip('[]').split()) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]
这里
str.strip('[]')
从字符串中删除
[]
,然后在空白处分割数据,然后对每个项应用
float()

另一个选项是将
ast.literal\u eval
与正则表达式一起使用:

>>> import re
>>> from ast import literal_eval
>>> r = re.compile(r'(\d)\s')
>>> [literal_eval(r.sub(r'\1,', x)) for x in s]
[[0.93913063, 0.28020878, 0.2769496], [0.21672141, 0.29633945, 0.19763641], [0.74718183, 0.33466203, 0.13866566], [0.1067503, 0.20448574, 0.16817043], [0.1223612, 0.11653754, 0.13288494], [0.48761208, 0.78240743, 0.38697977], [0.4300345, 0.50380231, 0.48102237]]

这份清单让人觉得有点鲁比·戈德伯格式的理解,但这是我的破绽

>>> l = ['[ 0.93913063  0.28020878  0.2769496 ]',
'[ 0.21672141  0.29633945  0.19763641]',
'[ 0.74718183  0.33466203  0.13866566]',
'[ 0.1067503   0.20448574  0.16817043]',
'[ 0.1223612   0.11653754  0.13288494]',
'[ 0.48761208  0.78240743  0.38697977]',
'[ 0.4300345   0.50380231  0.48102237]']

>>> [tuple(map(float,i[2:-1].split())) for i in l]
输出

[(0.93913063, 0.28020878, 0.2769496),
 (0.21672141, 0.29633945, 0.19763641),
 (0.74718183, 0.33466203, 0.13866566),
 (0.1067503, 0.20448574, 0.16817043),
 (0.1223612, 0.11653754, 0.13288494),
 (0.48761208, 0.78240743, 0.38697977),
 (0.4300345, 0.50380231, 0.48102237)]

这份清单让人觉得有点鲁比·戈德伯格式的理解,但这是我的破绽

>>> l = ['[ 0.93913063  0.28020878  0.2769496 ]',
'[ 0.21672141  0.29633945  0.19763641]',
'[ 0.74718183  0.33466203  0.13866566]',
'[ 0.1067503   0.20448574  0.16817043]',
'[ 0.1223612   0.11653754  0.13288494]',
'[ 0.48761208  0.78240743  0.38697977]',
'[ 0.4300345   0.50380231  0.48102237]']

>>> [tuple(map(float,i[2:-1].split())) for i in l]
输出

[(0.93913063, 0.28020878, 0.2769496),
 (0.21672141, 0.29633945, 0.19763641),
 (0.74718183, 0.33466203, 0.13866566),
 (0.1067503, 0.20448574, 0.16817043),
 (0.1223612, 0.11653754, 0.13288494),
 (0.48761208, 0.78240743, 0.38697977),
 (0.4300345, 0.50380231, 0.48102237)]

这份清单让人觉得有点鲁比·戈德伯格式的理解,但这是我的破绽

>>> l = ['[ 0.93913063  0.28020878  0.2769496 ]',
'[ 0.21672141  0.29633945  0.19763641]',
'[ 0.74718183  0.33466203  0.13866566]',
'[ 0.1067503   0.20448574  0.16817043]',
'[ 0.1223612   0.11653754  0.13288494]',
'[ 0.48761208  0.78240743  0.38697977]',
'[ 0.4300345   0.50380231  0.48102237]']

>>> [tuple(map(float,i[2:-1].split())) for i in l]
输出

[(0.93913063, 0.28020878, 0.2769496),
 (0.21672141, 0.29633945, 0.19763641),
 (0.74718183, 0.33466203, 0.13866566),
 (0.1067503, 0.20448574, 0.16817043),
 (0.1223612, 0.11653754, 0.13288494),
 (0.48761208, 0.78240743, 0.38697977),
 (0.4300345, 0.50380231, 0.48102237)]

这份清单让人觉得有点鲁比·戈德伯格式的理解,但这是我的破绽

>>> l = ['[ 0.93913063  0.28020878  0.2769496 ]',
'[ 0.21672141  0.29633945  0.19763641]',
'[ 0.74718183  0.33466203  0.13866566]',
'[ 0.1067503   0.20448574  0.16817043]',
'[ 0.1223612   0.11653754  0.13288494]',
'[ 0.48761208  0.78240743  0.38697977]',
'[ 0.4300345   0.50380231  0.48102237]']

>>> [tuple(map(float,i[2:-1].split())) for i in l]
输出

[(0.93913063, 0.28020878, 0.2769496),
 (0.21672141, 0.29633945, 0.19763641),
 (0.74718183, 0.33466203, 0.13866566),
 (0.1067503, 0.20448574, 0.16817043),
 (0.1223612, 0.11653754, 0.13288494),
 (0.48761208, 0.78240743, 0.38697977),
 (0.4300345, 0.50380231, 0.48102237)]

这非常适合正则表达式:

>>> import re
>>> data = '[ 0.93913063  0.28020878  0.2769496 ]'
>>> tuple(map(float, re.findall(r"([\d\.]+)", data)))
(0.93913063, 0.28020878, 0.2769496)

这将忽略任何空格并提取所有数字组和小数点。

这非常适合正则表达式:

>>> import re
>>> data = '[ 0.93913063  0.28020878  0.2769496 ]'
>>> tuple(map(float, re.findall(r"([\d\.]+)", data)))
(0.93913063, 0.28020878, 0.2769496)

这将忽略任何空格并提取所有数字组和小数点。

这非常适合正则表达式:

>>> import re
>>> data = '[ 0.93913063  0.28020878  0.2769496 ]'
>>> tuple(map(float, re.findall(r"([\d\.]+)", data)))
(0.93913063, 0.28020878, 0.2769496)

这将忽略任何空格并提取所有数字组和小数点。

这非常适合正则表达式:

>>> import re
>>> data = '[ 0.93913063  0.28020878  0.2769496 ]'
>>> tuple(map(float, re.findall(r"([\d\.]+)", data)))
(0.93913063, 0.28020878, 0.2769496)
这将忽略任何空白并提取所有数字组和小数点