2016-05-30 20 views
1

例如:如何刪除列表的浮動列表?

[['D', 'D', '-', '1', '.', '0'],['+', '2', '.', '0', 'D', 'D'],['D', 'D', 'D']] 

這就是:

D D -1.0 
+2.0 D D 
D D D 

我想提取的值,放在型動物的變量,知道行和列,其中信號是(這樣我就可以把符號,它對應於舊值)。

D D x 
y D D 
D D D 

[['D', 'D', '-1.0'],['+2.0', 'D', 'D'],['D', 'D', 'D']] 
+3

你是如何得到你的名單的?這在我看來是錯誤的。來自.txt文件的 – Daniel

+0

。 對於arq中的行: maze.append([line.strip()中item的項目]) return maze – Kondecigs

+0

你真的沒有空格嗎? – Daniel

回答

0

使用re.findall。模式[-+]?\d*\.\d+|\d+用於從字符串中提取浮點值。

import re 

list2d = [['D', 'D', '-', '1', '.', '0'],['+', '2', '.', '0', 'D', 'D'],['D', 'D', 'D']] 
lists = list() 

for l in list2d: 
    s = ''.join(l) 
    matches = re.findall(r"D|[-+]?\d*\.\d+|\d+", s) 

    lists.append(matches) 

print(lists) 
# Output 
[['D', 'D', '-1.0'], ['+2.0', 'D', 'D'], ['D', 'D', 'D']] 
+0

我可以漂浮(物品)嗎? '-1.0'在這種情況下是一個字符串,對嗎? – Kondecigs

+0

是的,參數mqy也是'+/-'。有關詳細說明,請參閱['float()'](https://docs.python.org/2/library/functions.html#float)。 – SparkAndShine

1
import itertools 
    merged = list(itertools.chain(*list2d)) 
    print [x for x in merged if not (x.isdigit() or x in '-+.')] 
+0

從代碼中刪除錯誤。 – Serenity

1

不要創建名單列表。採取直接從您的文件中的行,並將它們與正則表達式的幫助分裂:

maze = [] 
for line in arq: 
    maze.append(re.findall('[-+][0-9.]+|\S', line) 
+0

我需要列表清單,因爲它是迷宮地圖。 – Kondecigs

+0

你得到一個,但格式正確,而不是單個字符。 – Daniel

+0

謝謝!我現在明白了,這樣我創建了已經格式化的列表清單。 – Kondecigs

0

我不知道這是否是你想要的,可以在你的描述添加更多的信息。

import csv 

    csv_file = open("maze.txt") 
    csv_reader = csv.reader(csv_file) 

    maze = [] 
    for line in csv_reader: 
     for char in line: 
      maze.append(char.split()) 

    print(maze) 

    # Output 

    [['D', 'D', '-1.0'], ['+2.0', 'D', 'D'], ['D', 'D', 'D']] 
+0

'-1.0'在這種情況下是一個字符串,對嗎? 我可以漂浮(物品)嗎? – Kondecigs