这个话题已经讨论了很多,但我的内容更复杂。文本文件中的分隔符不仅仅是或任何单个分隔符,而是两种类型的分隔符。 "是不同字段之间的分隔符。
例如:
þIDþ"þNameþ"þAddressþ
þ1þ"þtest1þ"þt"est1þ
þ2þ"þt"est2þ"þtest2þ
我将阅读这些行,将这些元素分开,然后将它们存储到数据库中。
数据库表将如下:
ID Name Address
1 test1 t"est1
2 t"est2 test2
获得此结果的最佳方式是什么?拆分不起作用。图案?
答案 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可以直接处理;只需设置quotechar
和delimiter
选项:
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']