номер,слова,частицы,иероглифы,переводы,связанные,теги
,に・と,会う ,あう,"встречаться, видеться", 迎える,
,,青 ・ 青い ,あお ・ あおい," синий цвет, синий, голубой,бледный
-,",,
+",,
,,赤 ・ 赤い ,あか ・ あかい," красный цвет, красный ",,
,,明るい, , あかるい светлый,くらい ,
,,秋 ,,あき осень,,
"unicode/utf8"
)
+const (
+ fieldNumber = iota
+ fieldParticle
+ fieldKanji
+ fieldReading
+ fieldTranslation
+ fieldRelated
+ fieldTags
+)
+
// Select prefix satisfying predicate. If entire string satisfies predicate,
// index will equal to len(str) (i.e. effectively be out of range).
func many (str string, p func (rune) bool) int {
return true
}
-func splitReading (record []string) ([]string) {
+func trimRecordSpaces (record []string) ([] string) {
for i := 0; i < len(record); i += 1 {
- if i == 2 && isEmptyField(record[2]) {
- field := record[3]
- start, end := selectSubstring(field, isHiragana)
- //r, _ := utf8.DecodeRuneInString(field[start:])
- //fmt.Printf("hiragana: start = %v (%q), end = %v\n", start, r, end)
- record[2] = field[start:end]
- record[3] = field[end:]
- continue
- }
field := record[i]
start, end := selectSubstring(field, isNotSpace)
record[i] = field[start:end]
return record
}
+func fixHiraganaInTranslation (record []string) ([]string) {
+ if isEmptyField(record[fieldReading]) {
+ field := record[fieldTranslation]
+ start, end := selectSubstring(field, isHiragana)
+ //r, _ := utf8.DecodeRuneInString(field[start:])
+ //fmt.Printf("hiragana: start = %v (%q), end = %v\n", start, r, end)
+ record[fieldReading] = field[start:end]
+ record[fieldTranslation] = field[end:]
+ }
+
+ return record
+}
+
func main() {
fnIn, err := os.Open("1.csv")
if err != nil {
return
}
fmt.Printf("row: %v\n", l)
- err = csvOut.Write(splitReading(l))
+ f := func (record []string) []string {
+ return trimRecordSpaces(fixHiraganaInTranslation(record))
+ }
+ //err = csvOut.Write(splitReading(l))
+ err = csvOut.Write(f(l))
if err != nil {
fmt.Printf("Error: %v\n", err)
return