如何重复CSV文件中大行旁边的小行?(vlookup函数,也许?)



我可以用excel或Regex做到这一点吗?

i有一排(两列的),然后是每行7列的多行。我不知道每个单元格的确切内容,我不知道每个小排都在遵循多少行。

我想要的是移动下一行的小行,以下所有大行。

我想要这个:

title1, title2
bla, wla, bla, tra, bla, vla, bla
bla, wa, bla, bla, sla, bla, pla
bla, wa, sla, na, wla, kla, pla
title3, title4
bla, wa, sla, na, wla, kla, pla
bla, wa, bla, bla, sla, bla, pla
bla, wla, bla, tra, bla, vla, bla
bla, wla, bla, tra, bla, vla, bla
bla, wa, bla, bla, sla, bla, pla
title5, title6
bla, wla, bla, tra, bla, vla, bla
bla, wa, bla, bla, sla, bla, pla
title7, title8
bla, wa, bla, bla, sla, bla, pla
...
...

成为这个:

title1, title2, bla, wla, bla, tra, bla, vla, bla
title1, title2, bla, wa, bla, bla, sla, bla, pla
title1, title2, bla, wa, sla, na, wla, kla, pla
title3, title4, bla, wa, sla, na, wla, kla, pla
title3, title4, bla, wa, bla, bla, sla, bla, pla
title3, title4, bla, wla, bla, tra, bla, vla, bla
title3, title4, bla, wla, bla, tra, bla, vla, bla
title3, title4, bla, wa, bla, bla, sla, bla, pla
title5, title6, bla, wla, bla, tra, bla, vla, bla
title5, title6, bla, wa, bla, bla, sla, bla, pla
title7, title8, bla, wa, bla, bla, sla, bla, pla
...
...

谢谢所有!

这是一个Java代码,可以实现您要做的事情。它在您在上面的问题中给出的输入文件中读取,然后使用基本的解析逻辑,写出所需的格式。逻辑的关键是该行检查当前行中逗号的数量。如果它仅看到一个逗号,则它会缓存该行,该行将在后续行中使用具有单个逗号作为这些行前缀的前缀。

public static void main(String[] args) throws SQLException {
    File in = new File("C:\path\to\input.txt");
    File out = new File("C:\path\to\output.txt");
    BufferedReader br = null;
    BufferedWriter bw = null;
    try {
        br = new BufferedReader(new FileReader(in));
        bw = new BufferedWriter(new FileWriter(out));
        String header = "";
        do {
            String line = br.readLine();
            if (line == null) break;
            int numCommas = line.length() - line.replace(",", "").length();
            if (numCommas == 1) {
                header = line;
            }
            else {
                bw.write(header + ", " + line);
                bw.newLine();
            }
        } while (true);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null) br.close();
            if (bw != null) bw.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

如果您不知道足够的Java来使用此功能,那么您需要以某种方式弄清楚这一点。这就像Java程序一样裸露的骨头。

此代码在Intellij上进行了本地测试,并且似乎正在工作。

最新更新