求助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 这是完整文档
给你都处理成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');
}
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是跑通了 应该可以用正则吧 或者存数组分配{:1_918:} 导入excel时可以分开 用EXECEL,数据-自文本-分隔规则选文档里的标点符号和空格。 xlsheheda 发表于 2020-10-25 12:12
用EXECEL,数据-自文本-分隔规则选文档里的标点符号和空格。
试过了 是能分隔 但是分不成对应的 先用EXCEL分列,把所有的分成单元格,然后用if函数来判断是否出现连续两个单元格为汉字,是的话从中间分开换行,如果不是,那就再汉字前插入换行,最后复制到word来体现换行符,最后word倒回到excel。 用Python代码来处理最方便,但是要会写代码。
可以list切片
可以正则
找不到分割规则,没法分割 这个是JSON格式,用JSON解析就行了,分割肯定有规则的,仔细分析就知道是什么规则了 ofo 发表于 2020-10-25 12:36
这个是JSON格式,用JSON解析就行了,分割肯定有规则的,仔细分析就知道是什么规则了
看到JSON就害怕,感觉这规则很难琢磨