散列表变成csv / excel容易?

我需要一点帮助。

我有TreeMap里面的TreeMap TreeMap<String,TreeMap<String,Integer>>

我的文本输出如下所示(单行的例子):

 Phoneme "Y": ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] 

这意味着音素Y已经被我认定为31%,和Y等7,7%一样…

因此,我需要一个表(电子表格),每个音素在垂直(选定的音位)和水平(预测)线上,在单元格中对应于选定的行和行的概率。 这意味着例如在线“Y”将是如上所述的概率,所有其他的0%

那么最好的解决scheme是什么? 我应该手动编程获取这些信息,并顺序保存在CSV或有更好的方法吗?

使用API​​没有任何问题,特别是如果您希望数据包含特殊字符。 然而,这里是一个Java 8的一个class轮,你可以使用,如果你有一个CSV API,它会更清洁:

 treeMap.entrySet().forEach((e)->{ System.out.print("\""+e.getKey()+"\""); e.getValue().entrySet().forEach((m)->System.out.print(",\"" + m.getKey() + "\"," + m.getValue())); System.out.println(); }); 

“Y”, “**”,46.15, “I”,30.77, “Y”,7.69, “我”,15.38

以下是使用传统Java创build表格CSV输出的示例,不包含外部库。

 static String toCSV(Map<String, Map<String, Integer>> phonemeStats) { StringBuilder csv = new StringBuilder(512); // get ordered set of all statistic names Set<String> statNames = new TreeSet<String>(); for (Map<String, Integer> stats: phonemeStats.values()) { statNames.addAll(stats.keySet()); } // write column headings line csv.append("phoneme"); for (String name: statNames) { csv.append(",").append(name); } // write each phoneme line for (Map.Entry<String, Map<String, Integer>> entry: phonemeStats.entrySet()) { csv.append(System.lineSeparator()); csv.append(entry.getKey()); for (String name: statNames) { Integer value = entry.getValue().get(name); csv.append(","); if (value != null) { csv.append((value / 100d) + "%"); } } } return csv.toString(); } 

使用这个input(如Map<String, Map<String, Integer>> ):

 Phoneme "Y": ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] Phoneme "Z": ["**"=32,45%] ["I"=10,42%] ["X"=26,97%] ["i:"=5,38%] 

上面的方法返回:

 phoneme,**,I,X,Y,i: Y,46.15%,30.77%,,7.69%,15.38% Z,32.45%,10.42%,26.97%,,5.38% 

然后,您可以将该输出写入.CSV文件并在Excel中打开它。

Interesting Posts