文本文件冒号和空格分隔文件

时间:2016-02-17 10:37:49

标签: java python file octave

我有一个文件wordTopic.txt。文件格式为:

208:4 208:1 1049:2 3059:15 73684:10 715:15 6100:7 1129:15 1276:2 722:6 4809:1 726:15 6456:5 3703:10 1634:11 14342:13 13785:15 8930:6 61497:11 5435:15 327:1 327:1 228:8 7186:14 10229:2 13787:15 14683:3 437:7 1232:7 3272:15 127:15 9731:0 2367:6 957:8 957:8 810:15 11952:5 18459:5 35248:6 24209:6 19155:3 364:1 364:1 2550:15 7169:15 10939:15 35249:11 4039:8 21608:13 2612:7 1006:15 1113:15 87090:14 1423:8 2180:3 1375:15 270:9 2309:2 533:11 9204:15 660:16 17071:13 

上面是文件的一行,每行的长度不同

wordid:topicid wordid:topicid wordid:topicid........

我只希望将主题ID存储在数组中。如何获取主题id(即)如何在冒号后存储数字。主题ID仅为0到19。

4 个答案:

答案 0 :(得分:1)

在Java中,您可以按照以下方式执行此操作:

    String text= "208:4 208:1 1049:2 3059:15 73684:10 715:15 6100:7 1129:15";

    List<Integer> topicIds = new ArrayList<Integer>();
    for (String str: text.split(" ")) {
        topicIds.add(Integer.parseInt(str.split(":")[1]));
    }

答案 1 :(得分:0)

你的问题不是很清楚,但我会在python中做这样的事情:

假设这是一行,您可以阅读:

result_list = []
for element in line.split():
    result_list.append(element.split(":")[-1]

这样主题ID将存储在一个列表中(像python中的结构一样的数组)

答案 2 :(得分:0)

您可以阅读topicid这样的行:

topic_ids = [el.split(':')[1] for el in row.split()]

答案 3 :(得分:0)

你可以简单地使用正则表达式来解决你的问题(在python中)。

import re

text='208:4 208:1 1049:2 3059:15 73684:10 715:15 6100:7 1129:15 1276:2 722:6 4809:1 726:15 6456:5 3703:10 1634:11 14342:13 13785:15 8930:6 61497:11 5435:15 327:1 327:1 228:8 7186:14 10229:2 13787:15 14683:3 437:7 1232:7 3272:15 127:15 9731:0 2367:6 957:8 957:8 810:15 11952:5 18459:5 35248:6 24209:6 19155:3 364:1 364:1 2550:15 7169:15 10939:15 35249:11 4039:8 21608:13 2612:7 1006:15 1113:15 87090:14 1423:8 2180:3 1375:15 270:9 2309:2 533:11 9204:15 660:16 17071:13'

lst=[x[1:] for x in re.findall(":[0-9]*", text)]