如何使用JAVA / Python分隔分隔符文本?

时间:2017-05-11 16:11:09

标签: java python

这个话题已经讨论了很多,但我的内容更复杂。文本文件中的分隔符不仅仅是或任何单个分隔符,而是两种类型的分隔符。 "是不同字段之间的分隔符。

例如:

þIDþ"þNameþ"þAddressþ    
þ1þ"þtest1þ"þt"est1þ    
þ2þ"þt"est2þ"þtest2þ

我将阅读这些行,将这些元素分开,然后将它们存储到数据库中。

数据库表将如下:

ID   Name    Address
 1   test1   t"est1 
 2   t"est2   test2 

获得此结果的最佳方式是什么?拆分不起作用。图案?

2 个答案:

答案 0 :(得分:1)

您可以使用|运算符完成此操作。

Scanner scanner = new Scanner(System.in).useDelimiter("\\sþ\\s|\\s¶\\s");
String next = scanner.next();
System.out.println(next);
System.out.println(scanner.next());
System.out.println(scanner.next());

运行它应输出:

ID
Name
Address

答案 1 :(得分:1)

您的数据包含分隔符和引号。引号允许分隔符也用于列值。这里的分隔符是"字符,þ是引号字符。

Python csv module可以直接处理;只需设置quotechardelimiter选项:

import csv

with open(filename, 'r', newline='') as inputfile:
    reader = csv.reader(inputfile, delimiter='"', quotechar='þ')
    for row in reader:
        # handle the row

演示:

>>> import csv
>>> from io import StringIO
>>> data = StringIO('''\
... þIDþ"þNameþ"þAddressþ
... þ1þ"þtest1þ"þt"est1þ
... þ2þ"þt"est2þ"þtest2þ
... ''')
>>> reader = csv.reader(data, delimiter='"', quotechar='þ')
>>> for row in reader:
...     print(row)
...
['ID', 'Name', 'Address']
['1', 'test1', 't"est1']
['2', 't"est2', 'test2']