我想替换my_string
my_string = '[[4.6, 4.3, 4.3, 85.05], [8.75, 5.6, 6.6, 441.0], [4.6, 4.3, 4.3, 85.9625]]'
这样就可以得到这样的结果
my_string = '4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3'
last_item = '85.05 441.0 85.9625'
列表中的最后一项没有固定的长度我写的第一个目标
mystring = mystring.replace("[","").replace("]","").replace(", ","x")
但我需要一种更加pythonic的方式。
如果my_string = '[[4.6, 4.3, 4.3, 85.05], [8.75, 5.6, 6.6, 441.0], [4.6, 4.3, 4.3, 85.9625]]'
尝试这个:
import ast
my_string = " ".join(["x".join([str(k) for k in i[:-1]]) for i in ast.literal_eval(my_string)])
last_item = " ".join([str(k[-1]) for k in ast.literal_eval(my_string)])
更新:
在你的问题,my_string = '[[4.6, 4.3, 4.3, 85.05], [8.75, 5.6, 6.6, 441.0] [4.6, 4.3, 4.3, 85.9625]]'
。如果您打算将其用作my_string
,请尝试以下操作:
my_string = " ".join(["x".join([str(k) for k in i[:-1]]) for i in [i.replace(",","").split() for i in my_string.replace("[","").split("]") if len(i) >1]])
last_item = " ".join([str(k[-1]) for k in [i.replace(",","").split() for i in my_string.replace("[","").split("]") if len(i) >1
在第二种情况下,我们首先做my_string.replace("[","")
,导致'4.6, 4.3, 4.3, 85.05], 8.75, 5.6, 6.6, 441.0] 4.6, 4.3, 4.3, 85.9625]]'
。现在我们将它们与.split("]")
分开,结果导致['4.6, 4.3, 4.3, 85.05', ', 8.75, 5.6, 6.6, 441.0', ' 4.6, 4.3, 4.3, 85.9625', '', '']
。我们需要删除这里只是空字符串的项目,因此我们将if len(i) >1
部分合并到列表理解中。现在我们得到['4.6, 4.3, 4.3, 85.05', ', 8.75, 5.6, 6.6, 441.0', ' 4.6, 4.3, 4.3, 85.9625']
。我们需要删除列表的字符串项中的逗号。所以对于这个列表中的每个项目,我们做.replace(",","")
,然后是.split()
,现在导致[['4.6', '4.3', '4.3', '85.05'], ['8.75', '5.6', '6.6', '441.0'], ['4.6', '4.3', '4.3', '85.9625']]
。现在对于每个子列表,我们将项目提取到最后一个,然后我们执行"x".join()
并分配给my_string
。取这个列表,我们可以用" ".join()
添加所有最后的项目,并将其分配给last_item
变量。
尝试使用dict
my_string = '[[4.6, 4.3, 4.3, 85.05], [8.75, 5.6, 6.6, 441.0], [4.6, 4.3, 4.3,` 85.9625]]'
b = {'[': '', ']': '', ',': 'x'}
for x, y in b.items():
my_string = my_string.replace(x, y)
print(my_string)
您的字符串看起来像有效的json字符串。也许是这样的:
import json
def to_str(lst):
return 'x'.join([str(e) for e in lst])
my_string = '[[4.6, 4.3, 4.3, 85.05], [8.75, 5.6, 6.6, 441.0], [4.6, 4.3, 4.3, 85.9625]]'
temp = json.loads(my_string)
first_items = ' '.join([to_str(x[:-1]) for x in temp])
last_items = ' '.join([str(x[-1]) for x in temp])
print(first_items)
print(last_items)