zoenbo 发表于 2020-10-25 11:51

求助TXT里这样的内容怎么把它分隔开来?

本帖最后由 zoenbo 于 2020-10-25 19:28 编辑

这是开放词典里的词典文档,里边正文全都是放在一起,用“,”分隔开来的,如何能让它区分开来,比如“吖”为词汇,“ä”是拼音,“啊”是解释;格式为粵語詞彙、粤语拼音、国语解释;但是有的内容是只有词汇和拼音没解释,比如“吖啶”、“鸦雀无声”这种就没有解释,有什么方法让它分隔开来呢?

[粵語詞彙]      [粵語拼音]      [國語解釋]

["吖", "ä", "啊", "吖啶", "ä", "dènk", "鴉雀無聲", "ä", "jeôg", "mow", "sënk", "吖嗎", "ä", "má", "嗎,吧", "吖嘛", "ä", "má", "嘛,呀", "吖嗱", "ä", "na", "吧", "鴉片", "ä", "pîn", "鴉片戰爭", "ä", "pîn", "jîn", "jänk", "鴉片貿易", "ä", "pîn", "màw", "yèk", "丫頭", "ä", "taw", "丫鬟", "ä", "wan", "啞巴", "ã", "bä", "啞鈴", "ã", "lenk", "亞", "a", "阿", "呀", "a", "啊", "亞爸", "a", "ba", "爸爸", "亞伯", "a", "bag", "伯伯,伯父", "亞跛", "a", "bäy", "瘸子,跛子", "亞保亞勝", "a", "bõw", "a", "sênk", "張三李四", "亞叉", "a", "cä", "印度人,印度男人", "亞燦", "a", "can", "從內地來香港的新移民", "亞大", "a", "dài", "老大", "阿斗", "a", "dãw", "亞斗官", "a", "dãw", "gün", "闊少爺,敗家子", "阿飛", "a", "fëy", "亞福", "a", "fök", "傻頭傻腦的人", "亞甲亞乙", "a", "gab", "a", "yeùd", "張三李四", "亞遒?", "a", "gãmp", "côi", "亞狗亞貓", "a", "gãw", "a", "mäu", "張三李四", "亞哥", "a", "gö", "哥,哥哥,大哥", "亞姑", "a", "gü", "姑姑,姑母", "亞公", "a", "gönk", "外祖父,老大爺", "亞軍", "a", "guänt", "阿訇", "a", "guänk", "亞仔", "a", "jãy", "兒子", "亞吱亞咗", "a", "jï", "a", "jõ", "推三阻四,不滿,妨礙", "亞豬亞狗", "a", "jeü", "a", "gãw", "張三李四", "亞媽", "a", "mä", "媽媽,母親", "亞嫲", "a", "ma", "祖母,奶奶", "亞乜人", "a", "mät", "yant", "誰誰,某某", "亞茂", "a", "màw", "傻子,傻瓜", "亞茂整餅", "a", "màw", "jẽnk", "bẽng", "沒事找事", "亞茂整餅,冇嗰樣整嗰樣", "a", "màw", "jẽnk", "bẽng", "mów", "gõ", "yeõng", "jẽnk", "gõ", "yeõng", "沒事找事,亂搞一氣"]

http://kaifangcidian.com/xiazai/cidian_zhyue-kfcd.zip 这是完整文档

badyun 发表于 2020-10-25 15:13

给你都处理成excel了,如下图

https://vip.d0.badyun.com/img/4705c5ae40e8817c0201ee38a3c57a7864077ed05e6932c6435dac5454507088.png

文件打包下载地址如下,不过有一点要讲清楚,你有的词语是没有国语释义的,导致有的数组里面缺失从而错乱了,这个是你源文件的问题

https://vip.d0.badyun.com/static/excel.zip


我处理的代码如下

const fs = require('fs')
const json2xls = require('json2xls');

let all = fs.readdirSync('./text');

for (let index in all) {
    let s = fs.readFileSync('./text/' + all).toString()
    let name = s.split('\n').replace(/\[|]/g, '').split('\t')
    let content = []
    if (s.indexOf('"吖"') != -1) {
      // 数组形式
      let p = JSON.parse('["吖"' + (s.split('["吖"')))
      for (let i = 0; i < p.length; i += 3) {
            content.push(p.slice(i, i + 3));
      }
    } else {
      // csv形式
      let p = s.split('\n')
      for (let index in p) {
            if (index >= 9) {
                content.push(p.split('\t'))
            }
      }
    }
    const jsonArray = [];
    content.forEach(item => {
      let r = {}
      r] = item
      r] = item
      r] = item
      jsonArray.push(r);
    });

    let xls = json2xls(jsonArray);
    fs.writeFileSync('./excel/' + name + '-' + name + '-' + name + parseInt(Math.random() * 1000) + '.xlsx', xls, 'binary');
}



rsnodame 发表于 2020-10-25 23:22

import re
ptn = r'^[\x00-\x7f]+$'
ptn2 = r'^[^\x00-\x7f]+$'

cantonese = []
mandarin = []
pinyin = []
n = 0

while n < len(a):
        cantonese.append(a)
        py = []
        m = n + 1
        for i in range(len(a)):
                if re.search(ptn2,a) == None:
                        py.append(a)
                        m += 1
                else:
                        break
        pinyin.append(py)
        if m + 1 == len(a) or re.search(ptn2,a) != None:
                mandarin.append(a)
                n = m + 1
        else:
                mandarin.append("")
                n = m

简单写了个逻辑,根据你给的sample是跑通了

逝言 发表于 2020-10-25 12:07

应该可以用正则吧 或者存数组分配{:1_918:}

eydin 发表于 2020-10-25 12:08

导入excel时可以分开

xlsheheda 发表于 2020-10-25 12:12

用EXECEL,数据-自文本-分隔规则选文档里的标点符号和空格。

zoenbo 发表于 2020-10-25 12:14

xlsheheda 发表于 2020-10-25 12:12
用EXECEL,数据-自文本-分隔规则选文档里的标点符号和空格。

试过了 是能分隔 但是分不成对应的

daxuezuoye116 发表于 2020-10-25 12:21

先用EXCEL分列,把所有的分成单元格,然后用if函数来判断是否出现连续两个单元格为汉字,是的话从中间分开换行,如果不是,那就再汉字前插入换行,最后复制到word来体现换行符,最后word倒回到excel。

fanvalen 发表于 2020-10-25 12:25

用Python代码来处理最方便,但是要会写代码。
可以list切片
可以正则

skyamg 发表于 2020-10-25 12:27

找不到分割规则,没法分割

ofo 发表于 2020-10-25 12:36

这个是JSON格式,用JSON解析就行了,分割肯定有规则的,仔细分析就知道是什么规则了

zoenbo 发表于 2020-10-25 12:48

ofo 发表于 2020-10-25 12:36
这个是JSON格式,用JSON解析就行了,分割肯定有规则的,仔细分析就知道是什么规则了

看到JSON就害怕,感觉这规则很难琢磨
页: [1] 2 3
查看完整版本: 求助TXT里这样的内容怎么把它分隔开来?