从开始和结束单词之间的文件中获取数据

时间:2016-03-01 11:41:44

标签: java text

我有产品评论的数据集,我想在该文件的文本和打印之间提取文本。如何提取数据? 文件包含以下格式的数据

<review> id 
<reviewer></reviewer> 
<start word></end word> 
</review>

我的代码就像

File file = new File("D://Data/Dataset/unlabeled.review");
    FileInputStream fis = new FileInputStream(file);
    byte[] bytes = new byte[(int) file.length()];
    fis.read(bytes);
    fis.close();
    String text = new String(bytes, "UTF-8");
    System.out.println(text.substring(text.indexOf("<start word>"), text.lastIndexOf("</end word>")));

1 个答案:

答案 0 :(得分:1)

您的提取代码是:

    text.substring(text.indexOf("<review_text>"), 
                   text.lastIndexOf("</review_text>"));

此代码存在三个问题:

  1. indexOflastIndexOf方法返回某些参数字符串出现的第一个字符的偏移量。但是你需要从之后的第一个字符中提取“”。

  2. 如果有多个"<review_text>" / "</review_text>"对,则您的代码不会提取每对之间的文本。

  3. 如果没有"<review_text>"或没有"</review_text>",则一个或两个调用索引将返回-1,这将导致{{1}中的异常调用。