如何使用Java从文本文件中提取数据并将其写入CSV文件

路易斯

我有一个文本文件,包含引用,名称,地址,金额,dateTo,dateFrom和必填列,格式如下:

"120030125 J Blog  23, SOME HOUSE,                 259.44  21-OCT-2013  17-NOV-2013"
"                  SQUARE, STREET, LEICESTER,"
                   LE1 2BB

"120030318 R Mxx   37, WOOD CLOSE, BIRMINGHAM,     121.96  16-OCT-2013  17-NOV-2013  Y"                      
"                  STREET, NN18 8DF"

"120012174 JE xx   25, SOME HOUSE, QUEENS          259.44  21-OCT-2013  17-NOV-2013"
"                  SQUARE, STREET, LEICESTER,"
                   LE1 2BB

"100154992 DL x    23, SOME HOUSE, QUEENS          270.44  21-OCT-2013  17-NOV-2013  Y"             
"                  SQUARE, STREET, LEICESTER,"
                   LE1 2BC

我只对每个字符串的第一行感兴趣,想提取引用,名称,金额,dateTo和dateFrom列中的数据,并希望将它们写入CSV文件。目前,我只能编写以下代码并提取出第一行,并删除了开头和结尾的双引号。输入文件包含空格,输出文件也包含空格。

public class ReadTxt {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("C:/Users/me/Desktop/input.txt"));
        String pattern = "\"\\d\\d\\d\\d";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);
        int i;
        ArrayList<String> list = new ArrayList<String>();

        boolean a = true;
        PrintWriter out = new PrintWriter(new PrintWriter("C:/Users/me/Desktop/Output.txt"), a);

        try {
            String line = br.readLine();

            while (line != null) {
                Matcher m = r.matcher(line);

                if (m.find()) {
                    String temp;
                    temp = line.substring(1, line.length() - 1);
                    list.add(temp);
                }
                else {
                // do nothing
                }

                line = br.readLine();
            }
        }
        finally {
            br.close();
        }

        for (i = 0; i < list.size(); i++) {
            out.println(list.get(i));
        }

        out.flush();
        out.close();
    }
}

上面的代码将创建一个文本文件,并具有以下输出:

120030125  J Blog   23, SOME HOUSE, QUEENS       259.44  21-OCT-2013  17-NOV-2013
120030318  R Mxx    37, WOOD CLOSE, BIRMINGHAM,  121.96  16-OCT-2013  17-NOV-2013  Y                      
120012174  JE xx    25, SOME HOUSE, QUEENS       259.44  21-OCT-2013  17-NOV-2013
100154992  DL x     23, SOME HOUSE, QUEENS       259.44  21-OCT-2013  17-NOV-2013  Y

我的预期输出如下,但是存入一个csv文件中:

120030125  J Blog  259.44  21-OCT-2013  17-NOV-2013
120030318  R Mxx   121.96  16-OCT-2013  17-NOV-2013                        
120012174  JE xx   259.44  21-OCT-2013  17-NOV-2013
100154992  DL x    259.44  21-OCT-2013  17-NOV-2013  

因为我不是Java方面的专家,所以任何建议,教程链接或帮助都将不胜感激。我确实尝试在互联网上查找教程,但是找不到任何对我而言有用的教程。

保罗·萨姆索塔

在这里,测试一下。我只是使用了一个数组,但是您可以在您的代码中实现必要的代码。我更改了一些地址(查看数组中的第2和第3个地址),以使其具有空格,并且在不同位置没有空格可以测试。

public class SplitData {

    public static void main(String[] args) {
        String[] array = {"120030125  J Blog   23, SOME HOUSE, QUEENS       259.44  21-OCT-2013  17-NOV-2013",
            "120030318  R Mxx    37,WOODCLOSE,BIRMINGHAM,  121.96  16-OCT-2013  17-NOV-2013  Y 0",
            "120012174  JE xx    25, SOME HOUSE,QUEENS       259.44  21-OCT-2013  17-NOV-2013",
            "100154992  DL x     23, SOME HOUSE, QUEENS       259.44  21-OCT-2013  17-NOV-2013  Y"  
        };

        String s1 = null;
        String s2 = null;
        String s3 = null;
        String s4 = null;
        String s5 = null;
        for (String s : array) {
            String[] split = s.split("\\s+");
            s1 = split[0];
            s2 = split[1] + " " + split[2];
            for (String string: split) {
                if (string.matches("\\d+\\.\\d{2}")) {
                    s3 = string;
                    break;
                }
            }
            String[] newArray = s.substring(s.indexOf(s3)).split("\\s+");
            s4 = newArray[1];
            s5 = newArray[2];

            System.out.printf("%s\t%s\t%s\t%s\t%s\n", s1, s2, s3, s4, s5);
        }
    }  
}

输出量

120030125   J Blog  259.44  21-OCT-2013 17-NOV-2013
120030318   R Mxx   121.96  16-OCT-2013 17-NOV-2013
120012174   JE xx   259.44  21-OCT-2013 17-NOV-2013
100154992   DL x    259.44  21-OCT-2013 17-NOV-2013

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文本文件中提取多个模式并将其保存到熊猫数据框[python]

来自分类Dev

使用grep从文本文件中提取数据并将其保存在另一个目录中

来自分类Dev

使用Python从文本文件中提取数据并写入新文件

来自分类Dev

使用Python从文本文件中提取数据并写入新文件

来自分类Dev

如何使用 Python 读取文件并将其完全写入多个文本文件?

来自分类Dev

从文本文件中提取数据到csv

来自分类Dev

从文本文件中提取数据

来自分类Dev

从文本文件中提取数据

来自分类Dev

从文本文件中提取数据

来自分类Dev

从文件名中提取值并将其添加到文本文件中

来自分类Dev

如何从文本文件中提取数据?

来自分类Dev

使用MATLAB从文本文件中提取数据

来自分类Dev

使用bash从文本文件中提取数据

来自分类Dev

使用bash从文本文件中提取数据

来自分类Dev

使用python从多个文本文件中提取数据

来自分类Dev

使用Pandas从文本文件中提取标题数据

来自分类Dev

使用 for 循环从文本文件中提取数据

来自分类Dev

从文本文件中提取一列并将其存储在Python中的数据框中

来自分类Dev

我正在尝试从文本文件数据中提取并将其添加到audioread函数Matlab中

来自分类Dev

如何自动导出csv并将其发送到数据库或文本文件

来自分类Dev

如何从文本文件中提取特定的字符串并将其添加到列表中?

来自分类Dev

(批处理)从文本文件中提取数字并将其减去

来自分类Dev

从文本文件中提取特定数字并将其转换为年月日

来自分类Dev

如何在Java Spark中读取文本文件并将其转换为数据集?

来自分类Dev

从文本文件读取并将其写入XML

来自分类Dev

刮取输出并将其写入文本文件

来自分类Dev

从用户获取输入并将其写入文本文件

来自分类Dev

如何使用Java中的行号从文本文件中提取准确的文本行?

来自分类Dev

如何在文本文件中提取不同的数据子集并将每个子集传递到另一个文本文件中?

Related 相关文章

  1. 1

    从文本文件中提取多个模式并将其保存到熊猫数据框[python]

  2. 2

    使用grep从文本文件中提取数据并将其保存在另一个目录中

  3. 3

    使用Python从文本文件中提取数据并写入新文件

  4. 4

    使用Python从文本文件中提取数据并写入新文件

  5. 5

    如何使用 Python 读取文件并将其完全写入多个文本文件?

  6. 6

    从文本文件中提取数据到csv

  7. 7

    从文本文件中提取数据

  8. 8

    从文本文件中提取数据

  9. 9

    从文本文件中提取数据

  10. 10

    从文件名中提取值并将其添加到文本文件中

  11. 11

    如何从文本文件中提取数据?

  12. 12

    使用MATLAB从文本文件中提取数据

  13. 13

    使用bash从文本文件中提取数据

  14. 14

    使用bash从文本文件中提取数据

  15. 15

    使用python从多个文本文件中提取数据

  16. 16

    使用Pandas从文本文件中提取标题数据

  17. 17

    使用 for 循环从文本文件中提取数据

  18. 18

    从文本文件中提取一列并将其存储在Python中的数据框中

  19. 19

    我正在尝试从文本文件数据中提取并将其添加到audioread函数Matlab中

  20. 20

    如何自动导出csv并将其发送到数据库或文本文件

  21. 21

    如何从文本文件中提取特定的字符串并将其添加到列表中?

  22. 22

    (批处理)从文本文件中提取数字并将其减去

  23. 23

    从文本文件中提取特定数字并将其转换为年月日

  24. 24

    如何在Java Spark中读取文本文件并将其转换为数据集?

  25. 25

    从文本文件读取并将其写入XML

  26. 26

    刮取输出并将其写入文本文件

  27. 27

    从用户获取输入并将其写入文本文件

  28. 28

    如何使用Java中的行号从文本文件中提取准确的文本行?

  29. 29

    如何在文本文件中提取不同的数据子集并将每个子集传递到另一个文本文件中?

热门标签

归档