├── trending.csv
├── .gitignore
├── .github
└── workflows
│ ├── validate.yml
│ └── validate-and-sort.yml
├── scripts
├── ignore.csv
├── dedup_across_files.py
├── find_duplicates.py
├── sort_and_dedup.py
├── validate.py
├── jyutping.py
└── lint.py
├── .vscode
└── tasks.json
├── README-en.md
├── proper_nouns.csv
├── onomatopoeia.csv
├── README.md
├── variant.csv
├── LICENSE
└── fixed_expressions.csv
/trending.csv:
--------------------------------------------------------------------------------
1 | char,jyutping
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | scripts/__pycache__
2 |
--------------------------------------------------------------------------------
/.github/workflows/validate.yml:
--------------------------------------------------------------------------------
1 | name: Validate
2 |
3 | on:
4 | push:
5 | branches-ignore:
6 | - main # handled separately
7 | pull_request:
8 |
9 | jobs:
10 | compile:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v3
15 | - name: Validate
16 | run: python scripts/validate.py
17 | - name: Find Duplicated Lines
18 | run: python scripts/find_duplicates.py
19 |
--------------------------------------------------------------------------------
/scripts/ignore.csv:
--------------------------------------------------------------------------------
1 | char,jyutping
2 | 㕵,wau1
3 | 㗱,zep2
4 | 㗱,zep4
5 | 乓,bam1
6 | 乓,bam2
7 | 乓,bam4
8 | 円,jen1
9 | 卡,kaat1
10 | 呱,gwek4
11 | 咭,kaat1
12 | 唷,jo1
13 | 唷,jo3
14 | 喲,jo1
15 | 喴,wi1
16 | 喵,meu1
17 | 喼,gep1
18 | 嘭,bam4
19 | 嚕,lu1
20 | 嚕,lu3
21 | 嚕,lu4
22 | 壁,bek1
23 | 壁,bek3
24 | 壁,bek4
25 | 夾,gep2
26 | 夾,gep6
27 | 慕,mu1
28 | 掉,deu6
29 | 泵,bam1
30 | 瀎,met6
31 | 畸,ki1
32 | 疊,dep6
33 | 舔,lem2
34 | 芒,mon1
35 | 調,deu6
36 | 鉗,kem2
37 | 鉗,kem4
38 | 𠰲,oet1
39 | 𠵯,gwit1
40 | 𢚖,ti4
41 | 𦧷,lem2
42 | 𩜠,mam1
43 | 𪚩,gwi1
44 | 勾,ngau1
45 | 鈎,ngau1
46 | 銀,ngan2
47 | 揈,fing6
48 | 奀,ngan1
49 | 囈,ngai1
50 | 啱,ngaam1
51 | 額,ngaak2
52 | 鵝,ngo2
53 | 囊,nong2
54 | 耐,noi2
55 | 硬,ngaang2
56 | 𢯎,ngaau1
57 |
--------------------------------------------------------------------------------
/scripts/dedup_across_files.py:
--------------------------------------------------------------------------------
1 | from glob import iglob
2 |
3 | seen = set()
4 | seen_add = seen.add
5 |
6 | for filename in iglob('*.csv'):
7 | with open(filename, encoding='utf-8') as f:
8 | header = next(f).rstrip('\n')
9 | if header != 'char,jyutping':
10 | continue
11 | entries = []
12 | entries_append = entries.append
13 | for line in f:
14 | line = line.rstrip('\n')
15 | if line not in seen:
16 | entries_append(line)
17 | seen_add(line)
18 |
19 | with open(filename, 'w', encoding='utf-8') as f:
20 | print(header, file=f)
21 | for line in entries:
22 | print(line, file=f)
23 |
--------------------------------------------------------------------------------
/scripts/find_duplicates.py:
--------------------------------------------------------------------------------
1 | from collections import defaultdict
2 | from glob import iglob
3 | import sys
4 |
5 | line_to_locations = defaultdict(list)
6 |
7 | has_error = False
8 | i = 0
9 |
10 | for filename in iglob('*.csv'):
11 | with open(filename, encoding='utf-8') as f:
12 | next(f)
13 | for line_num, line in enumerate(f, 2):
14 | line = line.rstrip('\n')
15 | location = f'{filename}:{line_num}'
16 | line_to_locations[line].append(location)
17 |
18 | for line, locations in line_to_locations.items():
19 | if len(locations) > 1:
20 | locations_str = ', '.join(locations)
21 | print(f'[{i:04}] \033[91mERROR: "{line}" is duplicated in [{locations_str}]\033[0m', file=sys.stderr)
22 | has_error = True
23 | i += 1
24 |
25 | if has_error:
26 | sys.exit(1)
27 |
--------------------------------------------------------------------------------
/.github/workflows/validate-and-sort.yml:
--------------------------------------------------------------------------------
1 | name: Validate and sort
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | compile:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v3
14 | - name: Validate
15 | run: python scripts/validate.py
16 | - name: Find Duplicated Lines
17 | run: python scripts/find_duplicates.py
18 | - name: Sort
19 | run: python scripts/sort_and_dedup.py
20 | - name: Push back to GitHub when contents changed
21 | run: |
22 | git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
23 | git config user.name "github-actions[bot]"
24 | git add .
25 | if [ -n "$(git status --porcelain)" ]; then
26 | git commit -m "Sort entries"
27 | git push origin main
28 | fi
29 |
--------------------------------------------------------------------------------
/scripts/sort_and_dedup.py:
--------------------------------------------------------------------------------
1 | from glob import iglob
2 | from operator import itemgetter, methodcaller
3 |
4 | def compose(f, g):
5 | return lambda arg: f(g(arg))
6 |
7 | sort_cols = {
8 | 'variant.csv': (1, 3, 0, 2)
9 | }
10 |
11 | for filename in iglob('*.csv'):
12 | with open(filename, encoding='utf-8') as f:
13 | header = next(f).rstrip('\n')
14 | sort_criteria = methodcaller('split', ',')
15 | if filename in sort_cols:
16 | sort_criteria = compose(itemgetter(*sort_cols[filename]), sort_criteria)
17 | entries = sorted(f, key=sort_criteria)
18 |
19 | with open(filename, 'w', encoding='utf-8') as f:
20 | print(header, file=f)
21 | prev_line = None
22 | for line in entries:
23 | line = line.rstrip('\n')
24 | if line != prev_line:
25 | print(line, file=f)
26 | prev_line = line
27 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=733558
3 | // for the documentation about the tasks.json format
4 | "version": "2.0.0",
5 | "tasks": [
6 | {
7 | "label": "Lint",
8 | "type": "shell",
9 | "command": "python",
10 | "args": ["${workspaceFolder}/scripts/lint.py"],
11 | "isBackground": true,
12 | "presentation": {
13 | "clear": true,
14 | "reveal": "never"
15 | },
16 | "problemMatcher": {
17 | "owner": "python",
18 | "fileLocation": ["relative", "${workspaceFolder}"],
19 | "pattern": {
20 | "regexp": "^(.*?):(\\d+):(\\d+),(\\d+):\\s+(WARNING|ERROR):\\s+(.*)$",
21 | "file": 1,
22 | "line": 2,
23 | "column": 3,
24 | "endColumn": 4,
25 | "severity": 5,
26 | "message": 6
27 | },
28 | "background": {
29 | "activeOnStart": true,
30 | "beginsPattern": "----- Message Starts -----",
31 | "endsPattern": "----- Message Ends -----"
32 | }
33 | },
34 | "runOptions": {
35 | "runOn": "folderOpen"
36 | }
37 | }
38 | ]
39 | }
40 |
--------------------------------------------------------------------------------
/README-en.md:
--------------------------------------------------------------------------------
1 | [粵語](README.md)
2 |
3 | # rime-cantonese Upstream Word List
4 |
5 | This repo serves as the upstream data storage for [rime-cantonese](https://github.com/rime/rime-cantonese). The rime-cantonese repo regularly pulls data from this repo and compile the lexicon.
6 |
7 | ## Structure
8 |
9 | This repo contains the following files:
10 |
11 | 1. `char.csv`: Characters
12 | 1. `word.csv`: Common words
13 | 1. `phrase_fragment.csv`: Short phrases, input fragments and combos, ngrams
14 | 1. `trending.csv`: Uncategorized newly added words.
15 |
16 | ## Data sources
17 |
18 | Source of single character entries
19 |
20 | - LSHK 電腦用漢字粵語拼音表 https://github.com/lshk-org/jyutping-table
21 |
22 | Consultant resources for single character entries
23 |
24 | - [Unihan 12.0 kCantonese](https://www.unicode.org/charts/unihan.html)
25 | - [粵語審音配詞字庫](https://humanum.arts.cuhk.edu.hk/Lexis/lexi-can/)
26 | - [《廣州話正音字典》](https://github.com/jyutnet/cantonese-books-data/tree/master/2004_%E5%BB%A3%E5%B7%9E%E8%A9%B1%E6%AD%A3%E9%9F%B3%E5%AD%97%E5%85%B8)
27 |
28 | Source of word entries
29 |
30 | - [粵典](https://words.hk/faiman/analysis/wordslist/)
31 | - [冚唪唥粵文](https://hambaanglaang.hk/)
32 | - [《實用廣州話分類詞典》](https://github.com/rime/rime-cantonese/blob/build/lexicons/%E3%80%8A%E5%AF%A6%E7%94%A8%E5%BB%A3%E5%B7%9E%E8%A9%B1%E5%88%86%E9%A1%9E%E8%A9%9E%E5%85%B8%E3%80%8B.tsv)
33 | - A Dictionary of Cantonese Slang
34 | - 《廣州話詞典》
35 | - 《地道廣州話用語》
36 |
37 | ## Credits
38 |
39 | - laubonghaudoi
40 | - Ayaka
41 | - Leimaau
42 | - Chaak
43 | - Bing Cheung
44 | - Cherry
45 | - Lili Ou
46 | - Philip Wong
47 | - Henry Chan
48 | - Alex Man
49 |
--------------------------------------------------------------------------------
/proper_nouns.csv:
--------------------------------------------------------------------------------
1 | category,char,jyutping
2 | 交通,九巴,gau2 baa1
3 | 交通,九廣鐵路,gau2 gwong2 tit3 lou6
4 | 交通,城巴,sing4 baa1
5 | 交通,新巴,san1 baa1
6 | 人名,余文樂,jyu4 man4 lok6
7 | 人名,姜濤,goeng1 tou4
8 | 人名,張天賦,zoeng1 tin1 fu3
9 | 人名,張敬軒,zoeng1 ging3 hin1
10 | 人名,李兆基,lei5 siu6 gei1
11 | 人名,李卓仁,lei5 coek3 jan4
12 | 人名,李嘉誠,lei5 gaa1 sing4
13 | 人名,李家超,lei5 gaa1 ciu1
14 | 人名,李幸倪,lei5 hang6 ngai4
15 | 人名,林家謙,lam4 gaa1 him1
16 | 人名,林智樂,lam4 zi3 lok6
17 | 人名,林鄭,lam4 zeng6
18 | 人名,林鄭月娥,lam4 zeng6 jyut6 ngo4
19 | 人名,梁振英,loeng4 zan3 jing1
20 | 人名,炎明熹,jim4 ming4 hei1
21 | 人名,范徐麗泰,faan6 ceoi4 lai6 taai3
22 | 人名,邱彥筒,jau1 jin6 tung4
23 | 人名,陳健安,can4 gin6 on1
24 | 人名,陳卓賢,can4 coek3 jin4
25 | 人名,陳柏宇,can4 paak3 jyu5
26 | 人名,陳蕾,can4 leoi4
27 | 人名,馮允謙,fung4 wan5 him1
28 | 人名,魏浚笙,ngai6 zeon3 sang1
29 | 人名,黃偉文,wong4 wai5 man4
30 | 其他,中大,zung1 daai6
31 | 其他,城大,sing4 daai6
32 | 地名,上海,soeng6 hoi2
33 | 地名,中國,zung1 gwok3
34 | 地名,北京,bak1 ging1
35 | 地名,大埔,daai6 bou3
36 | 地名,大埔仔,daai6 bou3 zai2
37 | 地名,大埔墟,daai6 bou3 heoi1
38 | 地名,大陸,daai6 luk6
39 | 地名,屯元天,tyun4 jyun4 tin1
40 | 地名,屯門,tyun4 mun4
41 | 地名,掃桿埔,sou3 gon2 bou2
42 | 地名,沙田,saa1 tin4
43 | 地名,臺灣,toi4 waan1
44 | 地名,香港,hoeng1 gong2
45 | 路名,北大嶼山公路,bak1 daai6 jyu4 saan1 gung1 lou6
46 | 路名,城門隧道,sing4 mun4 seoi6 dou6
47 | 路名,大老山隧道,daai6 lou5 saan1 seoi6 dou6
48 | 路名,將藍隧道,zoeng1 laam4 seoi6 dou6
49 | 路名,屯公,tyun4 gung1
50 | 路名,屯赤,tyun4 cek3
51 | 路名,德士古道,dak1 si6 gu2 dou6
52 | 路名,東廊,dung1 long2
53 | 路名,東隧,dung1 seoi6
54 | 路名,欖隧,laam6 seoi6
55 | 路名,汀九橋,ding1 gau2 kiu4
56 | 路名,獅隧,si1 seoi6
57 | 路名,紅隧,hung4 seoi6
58 | 路名,荔橋,lai6 kiu4
59 | 路名,西隧,sai1 seoi6
60 | 路名,青山公路,cing1 saan1 gung1 lou6
61 | 路名,青馬大橋,cing1 maa5 daai6 kiu4
62 | 路名,香港仔隧道,hoeng1 gong2 zai2 seoi6 dou6
63 | 路名,鵝頸橋,ngo4 geng2 kiu4
64 | 路名,龍翔道,lung4 coeng4 dou6
65 | 飲食,譚仔,taam5 zai2
66 | 飲食,譚仔三哥,taam5 zai2 saam1 go1
67 |
--------------------------------------------------------------------------------
/onomatopoeia.csv:
--------------------------------------------------------------------------------
1 | type,jyutping,char
2 | A1111,bi1 li1 baa1 laa1,嗶哩叭啦
3 | A1111,bi1 li1 baa1 laa1,嗶哩吧啦
4 | A1111,ding1 ling1 daang1 laang1,傾呤哐啷
5 | A1111,gi1 li1 gu1 lu1,嘰哩咕嚕
6 | A1111,kik1 lik1 kaak1 laak1,虢礫緙嘞
7 | A1111,kik1 lik1 kaak1 laak1,闃礫緙嘞
8 | A1111,kik1 lik1 kaak1 laak1,𠽤叻𡃈嘞
9 | A1111,kik1 lik1 kaak1 laak1,𠽤嚦𡃈嘞
10 | A1111,king1 ling1 kaang1 laang1,傾呤哐啷
11 | A1111,king1 ling1 kong1 long1,傾鈴哐啷
12 | A1111,pik1 lik1 paak1 laak1,霹靂啪嘞
13 | A1111,ping1 ling1 paang1 laang1,砰鈴嘭唥
14 | A4144,bi4 li1 bek4 lek4,啤哩壁叻
15 | A4144,bing4 ling1 baang4 laang4,乒鈴嘭唥
16 | A4144,bing4 ling1 baang4 laang4,乒鈴𠾴唥
17 | A4144,bing4 ling1 baang4 laang4,砰呤嘭唥
18 | A4144,bing4 ling1 baang4 laang4,砰呤𠾴唥
19 | A4144,bing4 ling1 baang4 laang4,𠹶呤嘭唥
20 | A4144,bing4 ling1 baang4 laang4,𠹶呤𠾴唥
21 | A4144,fi4 li1 fe4 le4,fi li fe le
22 | A4144,fi4 li1 fe4 le4,飛哩啡呢
23 | A4144,gi4 li1 gat6 gat6,嘰哩咕嚕
24 | A4144,gi4 li1 gu4 lu4,嘰哩咕嚕
25 | A4144,ping4 ling1 paang4 laang4,砰呤嘭唥
26 | A4144,ping4 ling1 paang4 laang4,砰呤𠾴唥
27 | A4144,ping4 ling1 paang4 laang4,𠹶呤嘭唥
28 | A4144,ping4 ling1 paang4 laang4,𠹶呤𠾴唥
29 | A4144,si4 li1 soe4 loe4,si li sir lur
30 | A4144,si4 li1 soe4 loe4,噝哩𡄽𠼱
31 | A4163,ding4 ling1 dang6 lang3,椗呤鄧㨢
32 | B1111,mi1 mi1 mo1 mo1,咪咪嚒嚒
33 | B1111,mi1 mi1 mo1 mo1,咪咪嚤嚤
34 | B1111,mi1 mi1 mo1 mo1,咪咪摩摩
35 | B1111,mi1 mi1 mo1 mo1,咪咪摸摸
36 | B1111,zi1 zi1 zaa1 zaa1,吱吱喳喳
37 | B4144,hi4 hi1 hoe4 hoe4,hee hee hur hur
38 | B4144,ji4 ji1 aai4 aai4,咦咿哎哎
39 | B4144,ji4 ji1 ang4 ang4,咦咦ang ang
40 | B4144,ji4 ji1 ang4 ang4,咦咿哽哽
41 | B4144,ji4 ji1 ngo4 ngo4,咦咿哦哦
42 | B4144,ji4 ji1 o4 o4,咦咿哦哦
43 | B4144,zi4 zi1 zam4 zam4,吱吱斟斟
44 | B4166,gi4 gi1 gat6 gat6,嘰嘰咭咭
45 | B4166,gi4 gi1 gat6 gat6,嘰嘰屹屹
46 | B4166,gi4 gi1 gat6 gat6,嘰嘰訖訖
47 | B4166,gi4 gi1 gat6 gat6,嘰嘰趷趷
48 | B4166,gi4 gi1 gat6 gat6,齮齮齕齕
49 | B4444,bing4 bing4 baang4 baang4,砰砰嘭嘭
50 | B4444,bing4 bing4 baang4 baang4,𠹶𠹶嘭嘭
51 | B4444,ping4 ping4 paang4 paang4,砰砰嘭嘭
52 | B4444,ping4 ping4 paang4 paang4,𠹶𠹶嘭嘭
53 | B4444,zi4 zi4 zam4 zam4,吱吱浸浸
54 |
--------------------------------------------------------------------------------
/scripts/validate.py:
--------------------------------------------------------------------------------
1 | import jyutping
2 | import sys
3 | from glob import iglob
4 |
5 | non_han = {*',:'}
6 | multisyllable_allowlist = {*'兡瓸䇉竡尣兛瓩竏𥪕兝瓰竕嗧浬兞瓱竓呎吋啢𠺖兣糎甅竰卅𠯢兙瓧䇆竍卌'}
7 |
8 | with open('scripts/ignore.csv', encoding='utf-8') as f:
9 | next(f)
10 | ignoreroman_list = {tuple(line.rstrip('\n').split(',')) for line in f}
11 |
12 | def is_han(char):
13 | return char == '\u3007' or \
14 | '\u3400' <= char <= '\u4dbf' or \
15 | '\u4e00' <= char <= '\u9fff' or \
16 | '\uf900' <= char <= '\ufaff' or \
17 | '\U00020000' <= char <= '\U0002a6df' or \
18 | '\U0002a700' <= char <= '\U0002ebef' or \
19 | '\U0002f800' <= char <= '\U0002fa1f' or \
20 | '\U00030000' <= char <= '\U000323af'
21 |
22 | has_error = False
23 | i = 0
24 |
25 | for filename in iglob('*.csv'):
26 | with open(filename, encoding='utf-8') as f:
27 | if not next(f).startswith('char,jyutping'):
28 | continue
29 |
30 | for line_num, line in enumerate(f, 2):
31 | word, romans, *_ = line.rstrip('\n').split(',')
32 |
33 | word_ = [char for char in word if char not in non_han]
34 | romans_ = romans.split(' ')
35 |
36 | if '' in romans_:
37 | print(f'[{i:04}] \033[91m ERROR: [{filename}:{line_num}] Leading, trailing or continuous spaces are not allowed: {word}, "{romans}"\033[0m', file=sys.stderr)
38 | has_error = True
39 | i += 1
40 |
41 | romans_ = [roman for roman in romans_ if roman]
42 |
43 | if len(word_) != len(romans_) and not any(char in multisyllable_allowlist for char in word_):
44 | print(f'[{i:04}] \033[91m ERROR: [{filename}:{line_num}] Length do not match: {word}, "{romans}"\033[0m', file=sys.stderr)
45 | has_error = True
46 | i += 1
47 |
48 | if not all(is_han(char) for char in word_):
49 | print(f'[{i:04}] \033[91m ERROR: [{filename}:{line_num}] Word contains invalid char: {word}, "{romans}"\033[0m', file=sys.stderr)
50 | has_error = True
51 | i += 1
52 |
53 | for char, roman in zip(word_, romans_):
54 | if (char, roman) in ignoreroman_list:
55 | continue
56 | status = jyutping.validate(roman, jyutping.TestSet.LOOSE)
57 | if status == jyutping.ValidationStatus.UNCOMMON:
58 | print(f'[{i:04}] WARNING: [{filename}:{line_num}] Uncommon jyutping "{roman}": {word}, "{romans}"', file=sys.stderr)
59 | i += 1
60 | elif status == jyutping.ValidationStatus.INVALID:
61 | print(f'[{i:04}] \033[91m ERROR: [{filename}:{line_num}] Invalid jyutping "{roman}": {word}, "{romans}"\033[0m', file=sys.stderr)
62 | has_error = True
63 | i += 1
64 |
65 | if has_error:
66 | sys.exit(1)
67 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [English](README-en.md)
2 |
3 | # rime-cantonese 上游詞表
4 |
5 | [](https://creativecommons.org/licenses/by/4.0/)
6 |
7 | 本倉庫係 [rime-cantonese](https://github.com/rime/rime-cantonese) 嘅上游詞表。rime-cantonese 作為下游輸入法碼表會通過 CI 自動從本倉庫揸取更新構建新碼表。
8 |
9 | ## 結構
10 |
11 | 呢個上游詞表會將所有詞條分成以下幾類,每類對應一個文件:
12 |
13 | 1. `char.csv`:單字音
14 | 1. `variant.csv`:異體字分類
15 | 1. `word.csv`:常用詞
16 | 1. `fixed_expressions.csv`:成語、諺語、歇後語、文言短句
17 | 1. `phrase_fragment.csv`:短句、文字碎片、常見輸入組合、ngram
18 | 1. `trending.csv`未分類嘅流行詞
19 |
20 | ### 單字收錄 `char.csv` 格式説明
21 |
22 | | char | jyutping | pron_rank | tone_var | literary_vernacular | comment |
23 | | ------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
24 | | 漢字 Unicode | 粵拼:漢字對應嘅粵拼發音 | 發音常見度:
- `預設`:必須且唯一,常用度一定最高
- `常用`:可以有多於一個
- `罕見`
- `棄用`
| 該發音是否本調變調:- `本調`
- `變調`
| 該發音是否文白異讀: | 該發音例子、解釋:- 如果係罕見音,唔可以留空
- 如果個發音無能產性,就放例詞
- 可以放發音來源
- 唔可以有半角逗號`,`
|
25 |
26 | 高升變調唔歸入`白讀`,歸入`變調`。`-aak`/`-ak`互換、`ek`/`ik`等等先歸入`白讀`。濁上歸去嘅陽去讀音歸入`文讀`,陽上讀音歸入`白讀`。
27 |
28 | ### 單字收錄 `variant.csv` 格式説明
29 |
30 | `variant.csv` 係用嚟將一啲異體字壓低個排序。因為 `essay` 收集數據嘅範圍書面語比較多,一啲粵語先用嘅字頻率反而會低過啲其他語言嘅異體字,所以要根據呢個表去調校返單字嘅排序。
31 |
32 | | char | class | normal_char | comment |
33 | |------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------|---------|
34 | | 漢字 | 分類: - `罕見`:古代使用嘅異體,而家唔流行
- `古文`:古文隸定字
- `日文`:日文使用嘅「新字體」或者「國字」
- `韓文`:韓國漢字,例如「乭」、「兺」
- `來歷不明`:GS源嘅漢字
| 現代繁體中文使用嘅常用字(如適用) | 其他解釋 |
35 |
36 | 正常嚟講字表唔應該有簡化字(例如:银、纲),但係部分簡體中文會用到嘅字屬於俗字或者古字,例如「国」、「网」、「碍」,呢啲 case 就可以標做「罕見」。
37 |
38 | 標成「日文」唔代表得日文先用,大部分日文新字體都係以前曾經流通過嘅字形。
39 |
40 | ## 收錄原則
41 |
42 | ### 單字
43 |
44 | - 區分 ng-/∅- 聲母,統一剩收原讀音,唔收混淆後嘅讀音。
45 | - 除簡化漢字外,所有異體字字形都收錄。字形轉換交畀 [OpenCC](https://github.com/BYVoid/OpenCC) 處理。
46 | - 唔收懶音,例如 n-/l- 混淆音
47 |
48 | ### 詞語
49 |
50 | - 同單字音一樣,區分 ng-/∅- 聲母。
51 | - 所有詞條全部標準化成 OpenCC 字形。
52 | - 詞語標音全部記作實際發音,即係變調後嘅發音。
53 |
54 | ## 數據源
55 |
56 | 單字音主數據源
57 |
58 | - LSHK 電腦用漢字粵語拼音表 https://github.com/lshk-org/jyutping-table
59 |
60 | 參考數據源
61 |
62 | - [Unihan 12.0 kCantonese](https://www.unicode.org/charts/unihan.html)
63 | - [粵語審音配詞字庫](https://humanum.arts.cuhk.edu.hk/Lexis/lexi-can/)
64 | - [《廣州話正音字典》](https://github.com/jyutnet/cantonese-books-data/tree/master/2004_%E5%BB%A3%E5%B7%9E%E8%A9%B1%E6%AD%A3%E9%9F%B3%E5%AD%97%E5%85%B8)
65 |
66 | 詞條主數據源
67 |
68 | - [粵典](https://words.hk/faiman/analysis/wordslist/)
69 | - [冚唪唥粵文](https://hambaanglaang.hk/)
70 | - [《實用廣州話分類詞典》](https://github.com/rime/rime-cantonese/blob/build/lexicons/%E3%80%8A%E5%AF%A6%E7%94%A8%E5%BB%A3%E5%B7%9E%E8%A9%B1%E5%88%86%E9%A1%9E%E8%A9%9E%E5%85%B8%E3%80%8B.tsv)
71 | - A Dictionary of Cantonese Slang
72 | - 《廣州話詞典》
73 | - 《地道廣州話用語》
74 |
75 | ## 貢獻人員名單
76 |
77 | - laubonghaudoi
78 | - Ayaka
79 | - Leimaau
80 | - Chaak
81 | - Bing Cheung
82 | - Cherry
83 | - Lili Ou
84 | - Philip Wong
85 | - Henry Chan
86 | - Alex Man
87 |
--------------------------------------------------------------------------------
/variant.csv:
--------------------------------------------------------------------------------
1 | char,class,normal_char,comment
2 | 㖬,來歷不明,,
3 | 㗷,來歷不明,,
4 | 𠘰,來歷不明,,
5 | 𠣕,來歷不明,,
6 | 𠤖,來歷不明,,
7 | 𡓨,來歷不明,,
8 | 𡘊,來歷不明,,
9 | 𣸰,來歷不明,,
10 | 𤦉,來歷不明,,
11 | 㗸,來歷不明,,疑似「㘅」
12 | 𢌡,來歷不明,,疑似「㢠」
13 | 𠡳,來歷不明,,疑似「勔」
14 | 𡛀,來歷不明,,疑似「妭」
15 | 𡢠,來歷不明,,疑似「媧」或「𭒨」
16 | 𡣑,來歷不明,,疑似「嬪」
17 | 𡢞,來歷不明,,疑似「孆」
18 | 𤩷,來歷不明,,疑似「璿」
19 | 𡘓,來歷不明,,疑似「矦」
20 | 䄹,來歷不明,,疑似「秊」
21 | 𢇁,來歷不明,,疑似「絲」
22 | 𢇃,來歷不明,,疑似「絲」
23 | 𠁨,來歷不明,,疑似「翀」
24 | 𣸮,來歷不明,,疑似「陰」或「𣼩」
25 | 爂,古文,票,
26 | 㪿,古文,折,「折」古文
27 | 𠤣,古文,次𠂔,傳統字書表示係「次」嘅古文,實際上係「𠂔」嘅古文強行楷化。
28 | 䏮,日文,脅脇,
29 | 勲,日文,勳,
30 | 対,日文,對,
31 | 巣,日文,巢,
32 | 帯,日文,帶,
33 | 帰,日文,歸,
34 | 恵,日文,惠,
35 | 戸,日文,户戶,
36 | 抜,日文,拔,
37 | 挿,日文,插,
38 | 摂,日文,攝,
39 | 絶,日文,絕,
40 | 荘,日文,莊,
41 | 薫,日文,薰,
42 | 蝋,日文,蠟,
43 | 髪,日文,髮,
44 | 黒,日文,黑,
45 | 㑒,日文,僉,「㑒/僉」組
46 | 㪘,日文,斂,「㑒/僉」組
47 | 倹,日文,儉,「㑒/僉」組
48 | 剣,日文,劍,「㑒/僉」組
49 | 検,日文,檢,「㑒/僉」組
50 | 険,日文,險,「㑒/僉」組
51 | 験,日文,驗,「㑒/僉」組
52 | 鹸,日文,鹼,「㑒/僉」組
53 | 揺,日文,搖,「䍃」組
54 | 謡,日文,謠,「䍃」組
55 | 䰗,日文,鬮,「亀/龜」組
56 | 亀,日文,龜,「亀/龜」組
57 | 穐,日文,龝,「亀/龜」組
58 | 暦,日文,曆,「厤」組
59 | 歴,日文,歷,「厤」組
60 | 捜,日文,搜,「叟」組
61 | 痩,日文,瘦,「叟」組
62 | 尭,日文,堯,「尭/堯」組
63 | 暁,日文,曉,「尭/堯」組
64 | 焼,日文,燒,「尭/堯」組
65 | 経,日文,經,「巠」組
66 | 軽,日文,輕,「巠」組
67 | 頚,日文,頸,「巠」組
68 | 㦮,日文,戔,「戔」組
69 | 䇳,日文,箋,「戔」組
70 | 䬻,日文,餞,「戔」組
71 | 桟,日文,棧,「戔」組
72 | 賎,日文,賤,「戔」組
73 | 銭,日文,錢,「戔」組
74 | 斉,日文,齊,「斉/齊」組
75 | 斎,日文,齋,「斉/齊」組
76 | 歩,日文,步,「歩/步」組
77 | 渉,日文,涉,「歩/步」組
78 | 㾱,日文,癈,「発/發」組
79 | 廃,日文,廢,「発/發」組
80 | 溌,日文,潑,「発/發」組
81 | 発,日文,發,「発/發」組
82 | 醗,日文,醱,「発/發」組
83 | 㫪,日文,舂,「臼」組
84 | 焔,日文,焰,「臼」組
85 | 陥,日文,陷,「臼」組
86 | 舎,日文,舍,「舎/舍」組
87 | 舗,日文,舖,「舎/舍」組
88 | 臓,日文,臟,「蔵/藏」組
89 | 蔵,日文,藏,「蔵/藏」組
90 | 壊,日文,壞,「褱」組
91 | 懐,日文,懷,「褱」組
92 | 勧,日文,勸,「雚」組
93 | 権,日文,權,「雚」組
94 | 歓,日文,歡,「雚」組
95 | 潅,日文,灌,「雚」組
96 | 観,日文,觀,「雚」組
97 | 労,日文,勞,「𤇾」組
98 | 営,日文,營,「𤇾」組
99 | 栄,日文,榮,「𤇾」組
100 | 蛍,日文,螢,「𤇾」組
101 | 覚,日文,覺,「𦥯」組
102 | 㐀,罕見,丘,
103 | 㐧,罕見,第,
104 | 㐪,罕見,亥,
105 | 㑅,罕見,作,
106 | 㕻,罕見,咅,
107 | 㢴,罕見,西,
108 | 㥁,罕見,德,
109 | 㧞,罕見,拔,
110 | 㪯,罕見,舉,
111 | 㪽,罕見,所,
112 | 㫁,罕見,斷,
113 | 㳺,罕見,游,
114 | 㶾,罕見,票,
115 | 㸦,罕見,互,
116 | 䆴,罕見,竈,
117 | 䋄,罕見,網,
118 | 䍐,罕見,罕,
119 | 䍑,罕見,罕,
120 | 䍞,罕見,罭,
121 | 䑓,罕見,臺,
122 | 䖈,罕見,虐,
123 | 䖹,罕見,蛘,
124 | 䘖,罕見,銜,
125 | 䘗,罕見,徽,
126 | 䘙,罕見,衛衞,
127 | 䘠,罕見,袚,
128 | 䘮,罕見,喪,
129 | 䛐,罕見,詞,
130 | 䛕,罕見,諛,
131 | 䝉,罕見,蒙,
132 | 䟦,罕見,跋,
133 | 䡖,罕見,輕,
134 | 丗,罕見,世,
135 | 亁,罕見,乾,
136 | 亗,罕見,歲,
137 | 亱,罕見,夜,
138 | 兊,罕見,兌,
139 | 兲,罕見,天,
140 | 兲,罕見,𠀡,
141 | 凞,罕見,熙,
142 | 凴,罕見,憑,
143 | 卋,罕見,世,
144 | 卝,罕見,礦,
145 | 厺,罕見,去,
146 | 叐,罕見,犮,
147 | 哶,罕見,咩,
148 | 囬,罕見,回,
149 | 囯,罕見,國,
150 | 囻,罕見,國,
151 | 坕,罕見,巠,
152 | 尓,罕見,尔,
153 | 屳,罕見,仙,
154 | 岀,罕見,出,
155 | 嵗,罕見,歲,
156 | 廽,罕見,廻,
157 | 彂,罕見,發,
158 | 恱,罕見,悅,
159 | 恴,罕見,德,
160 | 悳,罕見,德,
161 | 惪,罕見,德,
162 | 扵,罕見,於,
163 | 揷,罕見,插,
164 | 摉,罕見,搜,
165 | 斈,罕見,學,
166 | 斍,罕見,覺,
167 | 斚,罕見,斝,
168 | 斵,罕見,斲,
169 | 橩,罕見,𣜧,
170 | 潈,罕見,潀,
171 | 潨,罕見,潀,
172 | 澙,罕見,潟,
173 | 灮,罕見,光,
174 | 焭,罕見,煢,
175 | 碍,罕見,礙,
176 | 縂,罕見,總,
177 | 网,罕見,網,
178 | 羐,罕見,羑,
179 | 舃,罕見,舄,
180 | 芁,罕見,艽,
181 | 蕏,罕見,藸,
182 | 蕚,罕見,萼,
183 | 薓,罕見,蓡,
184 | 蝅,罕見,蠶,
185 | 覇,罕見,霸,
186 | 覉,罕見,羇,
187 | 覊,罕見,羈,
188 | 逓,罕見,遞,
189 | 鎼,罕見,鏬,
190 | 鬬,罕見,鬭,
191 | 鵞,罕見,鵝,
192 | 𠘑,罕見,熙,
193 | 𠘕,罕見,熙,
194 | 𠙖,罕見,憑,
195 | 𡙡,罕見,羹,
196 | 𡚁,罕見,弊,
197 | 𡭊,罕見,對,
198 | 𢟍,罕見,歷,
199 | 𣸯,罕見,游,
200 | 𣽁,罕見,潀,
201 | 𤋮,罕見,熙,
202 | 𦬣,罕見,菵,
203 | 𦮖,罕見,羑,
204 | 𧢲,罕見,角,
205 | 𧩙,罕見,誕,
206 | 㒺,罕見,罔,「亡」組
207 | 㠩,罕見,巟,「亡」組
208 | 㡃,罕見,㡆,「亡」組
209 | 㤀,罕見,忘,「亡」組
210 | 亾,罕見,亡,「亡」組
211 | 兦,罕見,亡,「亡」組
212 | 㗋,罕見,喉,「侯」組
213 | 㺅,罕見,猴,「侯」組
214 | 矦,罕見,侯,「侯」組
215 | 㛮,罕見,嫂,「叟」組
216 | 䑹,罕見,艘,「叟」組
217 | 䗏,罕見,螋,「叟」組
218 | 䤇,罕見,醙,「叟」組
219 | 䤹,罕見,鎪,「叟」組
220 | 䬒,罕見,颼,「叟」組
221 | 䮟,罕見,騪,「叟」組
222 | 廀,罕見,廋,「叟」組
223 | 𦺋,罕見,䕅,「叟」組
224 | 㖾,罕見,咢,「咢」組
225 | 㦍,罕見,愕,「咢」組
226 | 䣞,罕見,鄂,「咢」組
227 | 遻,罕見,遌,「咢」組
228 | 蜖,罕見,蛔,「回」組
229 | 逥,罕見,迴,「回」組
230 | 嵜,罕見,㟢,「奇」組
231 | 竒,罕見,奇,「奇」組
232 | 𤦺,罕見,琦,「奇」組
233 | 㚷,罕見,妳,「尔」組
234 | 伱,罕見,你,「尔」組
235 | 尒,罕見,尔,「尔」組
236 | 鉩,罕見,鉨,「尔」組
237 | 䝇,罕見,豗,「尢」組
238 | 尦,罕見,尥,「尢」組
239 | 尩,罕見,尪,「尢」組
240 | 尫,罕見,尪,「尢」組
241 | 尶,罕見,尷,「尢」組
242 | 䣨,罕見,䣩,「屯」組
243 | 䤜,罕見,鈍,「屯」組
244 | 扥,罕見,扽,「屯」組
245 | 䗶,罕見,蠟,「巤」組
246 | 臈,罕見,臘,「巤」組
247 | 倊,罕見,傯,「忩/悤」組
248 | 捴,罕見,摠,「忩/悤」組
249 | 棇,罕見,樬,「忩/悤」組
250 | 焧,罕見,熜,「忩/悤」組
251 | 総,罕見,總,「忩/悤」組
252 | 㷓,罕見,熜,「怱/悤」組
253 | 䗓,罕見,蟌,「怱/悤」組
254 | 揔,罕見,摠,「怱/悤」組
255 | 楤,罕見,樬,「怱/悤」組
256 | 緫,罕見,總,「怱/悤」組
257 | 聦,罕見,聰,「怱/悤」組
258 | 㫄,罕見,旁,「旁」組
259 | 㮄,罕見,榜,「旁」組
260 | 㫺,罕見,昔,「昔」組
261 | 䥘,罕見,錯,「昔」組
262 | 㛆,罕見,㛊,「朵」組
263 | 刴,罕見,剁,「朵」組
264 | 挅,罕見,挆,「朵」組
265 | 朶,罕見,朵,「朵」組
266 | 跥,罕見,跺,「朵」組
267 | 躱,罕見,躲,「朵」組
268 | 㷀,罕見,煢,「煢」組
269 | 撑,罕見,撐,「牚」組
270 | 罉,罕見,𦉘,「牚」組
271 | 㙧,罕見,塯,「留」組
272 | 㩅,罕見,㨨,「留」組
273 | 橊,罕見,榴,「留」組
274 | 澑,罕見,溜,「留」組
275 | 璢,罕見,瑠,「留」組
276 | 畱,罕見,留,「留」組
277 | 癅,罕見,瘤,「留」組
278 | 鐂,罕見,鎦,「留」組
279 | 飅,罕見,飀,「留」組
280 | 驑,罕見,騮,「留」組
281 | 㨗,罕見,捷,「疌」組
282 | 偼,罕見,倢,「疌」組
283 | 媫,罕見,婕,「疌」組
284 | 㗐,罕見,嗑,「盍」組
285 | 葢,罕見,蓋,「盍」組
286 | 豓,罕見,豔,「盍」組
287 | 㰖,罕見,欖,「監」組
288 | 䌫,罕見,纜,「監」組
289 | 覧,罕見,覽,「監」組
290 | 鍳,罕見,鑒,「監」組
291 | 鑬,罕見,𨰲,「監」組
292 | 𨯿,罕見,𨰹,「監」組
293 | 㷠,罕見,粦,「粦」組
294 | 䢯,罕見,遴,「粦」組
295 | 䮼,罕見,驎,「粦」組
296 | 䋞,罕見,網,「罔」組
297 | 䒽,罕見,菵,「罔」組
298 | 䰣,罕見,魍,「罔」組
299 | 蛧,罕見,蝄,「罔」組
300 | 㤤,罕見,㥚,「臾」組
301 | 㬰,罕見,臾,「臾」組
302 | 茰,罕見,萸,「臾」組
303 | 螤,罕見,斔,「臾」組
304 | 猪,罕見,豬,「豬」組
305 | 邫,罕見,邦,「邑」組
306 | 郌,罕見,邽,「邑」組
307 | 郒,罕見,郎,「邑」組
308 | 郶,罕見,部,「邑」組
309 | 𨛦,罕見,郡,「邑」組
310 | 亰,罕見,京,「京」組
311 | 鿌,罕見,涼,「京」組
312 | 㬌,罕見,景,「京」組
313 | 䅫,罕見,稤,「京」組
314 | 𠡽,罕見,勍,「京」組
315 | 𢱊,罕見,掠,「京」組
316 | 𣄶,罕見,𣄵,「京」組
317 | 𤚒,罕見,㹁,「京」組
318 | 𥈘,罕見,䁁,「京」組
319 | 𦂠,罕見,綡,「京」組
320 | 𧤚,罕見,𧤀,「京」組
321 | 𨍡,罕見,輬,「京」組
322 | 𪋔,罕見,麖,「京」組
323 | 𫮎,罕見,𡌿,「京」組
324 | 𬷦,罕見,鶁,「京」組
325 | 𭕒,罕見,就,「京」組
326 | 𮔥,罕見,𧌬,「京」組
327 | 𰐞,罕見,弶,「京」組
328 | 𧫴,罕見,謹,同謹嘅日本字形同形,HKSCS當另一個字收多咗次。
329 | 𡣘,罕見,,正字未編碼:⿰女蒙位於GB18030 0xA029E
330 | 𠒇,罕見,兒,見於人名雷莊𠒇
331 | 麫,罕見,麪,錯別字:「丏」訛變成「丐」
332 | 㒮,罕見,豗,錯別字:「兀」訛變成「元」
333 | 斴,罕見,粼,錯別字:「巜」訛變成「斤」
334 | 屫,罕見,屩,錯別字:「彳」訛變成「爿」
335 | 𨗴,罕見,暹,錯別字:「日」訛變成「罒」
336 | 𤒹,罕見,爗,錯別字:「日」誤寫成「田」,見於人名江𤒹生
337 | 縀,罕見,緞,錯別字:「段」變成「叚」
338 | 𦀩,罕見,緞,錯別字:「段」變成「叚」再訛變
339 | 蠎,罕見,蟒,錯別字:「犬」同埋下方部件訛變成「奔」
340 | 䛧,罕見,謎,錯別字:「辶」訛變成「𠃊」
341 | 𨌺,罕見,翰,錯別字:「龺」訛變成「車」
342 | 礡,罕見,礴,錯別字:原大五碼漏掉「氵」
343 | 𠄘,罕見,承,錯別字:缺少一筆
344 | 䆋,罕見,龝,錯別字:龜右下角錯誤
345 | 㐇,韓文,,
346 | 㐈,韓文,,
347 | 㐉,韓文,,
348 | 㐊,韓文,,
349 | 㐋,韓文,,
350 | 㐍,韓文,,
351 | 㐎,韓文,,
352 | 㐏,韓文,,
353 | 㐐,韓文,,
354 | 㐑,韓文,,
355 | 㐒,韓文,,
356 | 㐓,韓文,,
357 | 㐔,韓文,,
358 | 㐕,韓文,,
359 | 㐗,韓文,,
360 | 㐘,韓文,,
361 | 㐙,韓文,,
362 | 㐚,韓文,,
363 | 㐛,韓文,,
364 | 㐝,韓文,,
365 | 㐞,韓文,,
366 | 㐟,韓文,,
367 | 㐠,韓文,,
368 | 㐢,韓文,,
369 | 㐣,韓文,,
370 | 㐥,韓文,,
371 | 㐦,韓文,,
372 | 㔔,韓文,,
373 | 㔖,韓文,,
374 | 㕾,韓文,,
375 | 㖈,韓文,,
376 | 㖋,韓文,,
377 | 㖌,韓文,,
378 | 㖍,韓文,,
379 | 㖎,韓文,,
380 | 㖙,韓文,,
381 | 㖚,韓文,,
382 | 㖛,韓文,,
383 | 㖜,韓文,,
384 | 㖝,韓文,,
385 | 㖯,韓文,,
386 | 㖰,韓文,,
387 | 㖲,韓文,,
388 | 㖳,韓文,,
389 | 㗟,韓文,,
390 | 㗠,韓文,,
391 | 㗡,韓文,,
392 | 㗯,韓文,,
393 | 㪲,韓文,,
394 | 㪳,韓文,,
395 | 㫇,韓文,,
396 | 㫈,韓文,,
397 | 䎛,韓文,,
398 | 乤,韓文,,
399 | 乧,韓文,,
400 | 乫,韓文,,
401 | 乬,韓文,,
402 | 乭,韓文,,
403 | 乮,韓文,,
404 | 乯,韓文,,
405 | 乲,韓文,,
406 | 乴,韓文,,
407 | 乶,韓文,,
408 | 乷,韓文,,
409 | 乺,韓文,,
410 | 乻,韓文,,
411 | 乼,韓文,,
412 | 乽,韓文,,
413 | 哛,韓文,,
414 | 巪,韓文,,
415 | 旕,韓文,,
416 | 蒊,韓文,,
417 | 㢱,韓文,,口訣字
418 | 㫆,韓文,,口訣字
419 | 丆,韓文,,口訣字
420 | 丷,韓文,,口訣字
421 | 乊,韓文,,口訣字
422 | 亪,韓文,,口訣字
423 | 亽,韓文,,口訣字
424 | 仒,韓文,,口訣字
425 | 兯,韓文,,口訣字
426 | 厼,韓文,,口訣字
427 | 壭,韓文,,口訣字
428 | 朩,韓文,,口訣字
429 | 爳,韓文,,口訣字
430 | 罖,韓文,,口訣字
431 |
--------------------------------------------------------------------------------
/scripts/jyutping.py:
--------------------------------------------------------------------------------
1 | import re
2 |
3 | class Validator:
4 | def __init__(self, groups):
5 | self.groups = groups
6 |
7 | def test(self, test_set):
8 | return max(self.test_rule(rule_set) for rule_set in test_set.values())
9 |
10 | def test_rule(self, rule_set):
11 | for level, matchers in rule_set:
12 | if all(Validator.match(matcher, group) for matcher, group in zip(matchers, self.groups)):
13 | return level
14 | return ValidationStatus.VALID
15 |
16 | @staticmethod
17 | def match(matcher, group):
18 | return matcher is None or group in ['' if part == '-' else part for part in matcher.split(' ')]
19 |
20 | class ValidationStatus:
21 | VALID = 0
22 | UNCOMMON = 1
23 | INVALID = 2
24 |
25 | class TestSet:
26 | valid, alert, error = ValidationStatus.VALID, ValidationStatus.UNCOMMON, ValidationStatus.INVALID
27 | STRICT = {
28 | 'Onset - Nucleus - Coda': [
29 | (valid, ('-', '-', 'm ng')),
30 | (alert, ('h', '-', 'm ng')),
31 | (error, (None, '-', None)),
32 |
33 | (error, ('b p m f gw kw w', 'o', 'i')),
34 | (valid, ('z c s j', 'yu', '-')),
35 | (error, (None, 'yu', '-')),
36 |
37 | (error, ('-', 'aa', 'm')),
38 | (error, ('p h', 'aa', 't')),
39 |
40 | (valid, ('n', 'aa', 'u')),
41 | (alert, ('d', 'aa', 'k')),
42 | (error, ('f d t n', 'aa', 'u ng k')),
43 | (error, ('k', 'aa', 'm n ng p t k')),
44 |
45 | (alert, ('n', 'a', 't k')),
46 | (error, ('t', 'a', 't k')),
47 | (error, ('p f', 'a', 'k')),
48 | (alert, ('ng k', 'a', 'ng')),
49 | (alert, ('-', 'a', 'n t')),
50 | (alert, ('g k w', 'a', 'k')),
51 |
52 | (alert, ('k', 'o', '-')),
53 | (error, ('f', 'o', 'u')),
54 |
55 | (error, ('t', 'e', '-')),
56 | (error, ('t z c j', 'e', 'i')),
57 | (error, ('f n', 'e', 'ng')),
58 | (error, ('b m f n g j', 'e', 'k')),
59 |
60 | (alert, ('t k l z s', 'oe', '-')),
61 | (error, ('n c j', 'oe', '-')),
62 | (error, ('t', 'oe', 'ng')),
63 | (error, ('t h', 'oe', 'k')),
64 |
65 | (error, ('n', 'eo', 'n')),
66 | (error, ('j', 'eo', 't')),
67 | (error, ('g k h', 'eo', 'n t')),
68 |
69 | (error, ('p f t k', 'i', '-')),
70 | (error, ('f', 'i', 'n')),
71 | (error, ('w', 'i', '- n t')),
72 |
73 | (error, ('b p m', 'u', '-')),
74 | (error, ('k', 'u', 'n')),
75 | (error, ('w', 'u', 'ng k')),
76 |
77 | (error, ('n', 'yu', 't')),
78 |
79 | (alert, ('kw', 'aa', 'i')),
80 | (error, ('kw', 'aa', 'n')),
81 | (error, ('kw', 'a', 'k')),
82 | (error, ('kw', 'o', '-')),
83 | (error, ('kw', 'i', 'ng')),
84 |
85 | (error, ('j', 'aa', 'm n t')),
86 | (error, ('j', 'a', 'ng k')),
87 | ],
88 | 'Nucleus - Coda': [
89 | (valid, ('- m l g z', 'a', '-')),
90 | (error, (None, 'a', '-')),
91 |
92 | (valid, ('- g ng h', 'o', 'n')),
93 | (valid, ('g h', 'o', 't')),
94 | (alert, ('l z', 'e', 'u')),
95 | (alert, ('b p d ng', 'e', 't')),
96 | (error, (None, 'o e', 'm n p t')),
97 |
98 | (valid, (None, 'oe', '- ng k')),
99 | (alert, ('z c', 'oe', 't')),
100 | (error, (None, 'oe', None)),
101 | (valid, (None, 'eo', 'i n t')),
102 | (error, (None, 'eo', None)),
103 |
104 | (error, (None, 'i', 'i')),
105 | (error, (None, 'u', 'u m p')),
106 | (valid, (None, 'yu', '- n t')),
107 | (error, (None, 'yu', None)),
108 | ],
109 | 'Onset - Coda': [
110 | (error, ('gw kw w', None, 'u')),
111 | (error, ('b p m f gw kw w', None, 'm p')),
112 | (error, ('kw', None, 't')),
113 | ],
114 | 'Onset - Nucleus': [
115 | (error, ('- b p m f ng gw kw w', 'oe eo yu', None)),
116 |
117 | (alert, ('f', 'i', None)),
118 | (error, ('j', 'o', None)),
119 |
120 | (error, ('-', 'e', None)),
121 |
122 | (valid, ('-', 'u', 'ng k')),
123 | (error, ('-', 'i u', None)),
124 |
125 | (alert, ('w', 'e', '-')),
126 | (error, ('ng gw kw w', 'e', None)),
127 | (valid, ('gw kw', 'i', 'ng k')),
128 | (error, ('ng gw kw', 'i u', None)),
129 |
130 | (valid, ('d t n l h z c s j', 'u', 'ng k')),
131 | (error, ('d t n l h z c s j', 'u', None)),
132 | ],
133 | 'Onset - Nucleus - Tone': [
134 | (error, ('n', 'o', None, '1 2 3')),
135 | ],
136 | 'Onset - Tone': [
137 | (error, ('ng', None, None, '1 2 3')),
138 |
139 | (valid, ('-', 'aa', '-', '4 5 6')),
140 | (valid, ('-', '-', 'm ng', '4 5 6')),
141 | (error, ('-', None, None, '4 5 6')),
142 | ],
143 | 'Coda - Tone': [
144 | (alert, (None, None, 'p t k', '4 5')),
145 | ],
146 | }
147 | LOOSE = {
148 | 'Onset - Nucleus - Coda': [
149 | (valid, ('- h', '-', 'm ng')),
150 | (error, (None, '-', None)),
151 |
152 | (valid, ('z c s j', 'yu', '-')),
153 | (error, (None, 'yu', '-')),
154 |
155 | (alert, ('w', 'i', '-')),
156 | (error, ('w', 'i', 'n t')),
157 | (error, ('w', 'u', 'ng k')),
158 | ],
159 | 'Nucleus - Coda': [
160 | (error, (None, 'o', 'm p')),
161 | (alert, (None, 'e', 't')),
162 | (error, (None, 'e', 'n')),
163 |
164 | (valid, (None, 'oe', '- ng k')),
165 | (valid, ('- z c', 'oe', 't')),
166 | (error, (None, 'oe', None)),
167 | (valid, (None, 'eo', 'i n t')),
168 | (error, (None, 'eo', None)),
169 |
170 | (error, (None, 'i', 'i')),
171 | (error, (None, 'u', 'u m p')),
172 | (valid, (None, 'yu', '- n t')),
173 | (error, (None, 'yu', None)),
174 | ],
175 | 'Onset - Coda': [
176 | (error, ('gw kw w', None, 'u')),
177 | (alert, ('b p m f gw kw w', None, 'm p')),
178 | ],
179 | 'Onset - Nucleus': [
180 | (error, ('- b p m f ng gw kw w', 'oe eo yu', None)),
181 |
182 | (valid, ('-', 'e', '-')),
183 | (alert, ('-', 'e', 'i')),
184 | (error, ('-', 'e', None)),
185 |
186 | (valid, ('-', 'u', 'ng k')),
187 | (alert, ('-', 'i', 'k')),
188 | (error, ('-', 'i u', None)),
189 |
190 | (valid, ('ng', 'i', 't')),
191 | (alert, ('- ng gw kw w', 'e', None)),
192 | (valid, ('gw kw', 'i', 'ng k')),
193 | (error, ('ng gw kw', 'i u', None)),
194 |
195 | (valid, ('d t n l h z c s j', 'u', 'ng k')),
196 | (error, ('d t n l h z c s j', 'u', None)),
197 | ],
198 | }
199 | MINIMAL = {
200 | 'Onset - Nucleus - Coda': [
201 | (valid, ('- h', '-', 'm ng')),
202 | (error, (None, '-', None)),
203 | ],
204 | 'Nucleus - Coda': [
205 | (error, (None, 'oe', 'i')),
206 | (error, (None, 'eo', '- u')),
207 |
208 | (error, (None, 'i', 'i')),
209 | (error, (None, 'u', 'u')),
210 | (valid, (None, 'yu', '- n t')),
211 | (error, (None, 'yu', None)),
212 | ],
213 | 'Onset - Nucleus': [
214 | (error, ('gw kw w', 'yu', None)),
215 | ],
216 | }
217 |
218 | def validate(jyutping, test_set=TestSet.STRICT):
219 | '''
220 | >>> validate('jyut6')
221 | 0 # ValidationStatus.VALID
222 | >>> validate('fing6')
223 | 1 # ValidationStatus.UNCOMMON
224 | >>> validate('nguk1')
225 | 2 # ValidationStatus.INVALID
226 | '''
227 | match = re.match('^([gk]w?|ng|[bpmfdtnlhwzcsj]?)(?![1-6]$)(aa?|oe?|eo?|y?u|i?)(ng|[iumnptk]?)([1-6])$', jyutping)
228 | if match is None: return ValidationStatus.INVALID
229 | return validate_args(test_set, *match.groups())
230 |
231 | def validate_args(test_set, *args):
232 | '''
233 | >>> validate('j', 'yu', 't', '6')
234 | 0 # ValidationStatus.VALID
235 | >>> validate('f', 'i', 'ng', '6')
236 | 1 # ValidationStatus.UNCOMMON
237 | >>> validate('ng', 'u', 'k', '1')
238 | 2 # ValidationStatus.INVALID
239 | '''
240 | return Validator(args).test(test_set)
241 |
--------------------------------------------------------------------------------
/scripts/lint.py:
--------------------------------------------------------------------------------
1 | import jyutping
2 | import time
3 | import os
4 | from glob import iglob
5 | from os.path import basename
6 | from itertools import accumulate
7 | from bisect import bisect
8 | from watchdog.observers import Observer
9 | from watchdog.events import FileSystemEventHandler
10 |
11 | non_han = {*',: '}
12 | other_han = {*'〇﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧﨨﨩'}
13 | two_syllable_char = {*'卅𠯢卌'}
14 | multisyllable_allowlist = {*'兡瓸䇉竡尣兛瓩竏𥪕兝瓰竕嗧浬兞瓱竓呎吋啢𠺖兣糎甅竰卅𠯢兙瓧䇆竍卌'}
15 | column_values = {
16 | "pron_rank": {"預設", "常用", "罕見", "棄用"},
17 | "tone_var": {"", "本調", "變調"},
18 | "literary_vernacular": {"", "文讀", "白讀"},
19 | "class": {"罕見", "古文", "日文", "韓文", "來歷不明"},
20 | }
21 | validation_set = {
22 | "onomatopoeia.csv": jyutping.TestSet.LOOSE,
23 | }
24 |
25 | simplified_start = "䌶䜣䞌䢀䥺䦶䭪䯃䲝䴓䶭丬卤纟见觇讠贝车钅长门韦页风飞饣马鱼鸟鹾麦麸黄黾鼋齐齿龙龟鿏鿔鿭鿴𦈈𧮪𧹑𨐅𨰾𨷿𩏼𩖕𩙥𩟾𩧦𩽹𩾁𩾊𩾎𪉁𪎈𪚏𫄙𫌨𫍙𫎦𫐄𫓥𫔬𫖑𫖪𫗇𫗞𫘛𫚈𫛚𫜊𫜑" + \
26 | "𫜟𫜨𫜲𫟃𫟞𫟤𫟲𫠅𫠊𫠏𫠖𫠜𬌒𬘓𬢇𬣙𬥳𬨁𬬧𬮘𬰱𬱓𬱵𬲥𬳳𬶀𬷕𬷻𬸵𬹅𬹣𬹳𬹺𬺛𮉠𮙉𮝳𮣲𮤫𮧴𮨴𮩛𮪡𮬛𮭡𮭰𮮃𮯙黾𰠗𰫼𰴕𰵊𰷞𰹯𰽕𰿖𰿥𱂃𱂠𱃔𱃱𱄼𱇍𱉇𱊺𱋄𱋾𱌗𱌩𱍁𱭗𱺏𲁑𲂂𲂺𲅀𲇭𲈤𲈵𲊥𲊹𲋎𲋓𲋢𲌄𲍆𲍫𲎑𲎧𲎮"
27 | simplified_end = "䍁䜩䞐䢂䦆䦸䭪䯅䲤䴙䶮丬卤缵觅觑谶赣辚镶长阛韬颧飚飞馕骧鳤鹴鹾麦麺黄黾鼍齑龌龛龟鿏鿕鿭鿺𦈡𧮪𧹗𨐊𨱖𨸎𩐀𩖗𩙰𩠏𩨐𩽿𩾈𩾌𩾎𪉕𪎐𪚐𫄹𫌭𫍿𫎬𫐙𫔕𫔹𫖖𫖺𫗌𫗵𫘱𫚭𫜆𫜊𫜕" + \
28 | "𫜟𫜰𫜳𫟇𫟢𫟦𫠂𫠈𫠌𫠒𫠗𫠜𬌒𬙋𬢔𬤱𬦀𬨕𬮃𬮹𬰸𬱳𬲈𬳔𬴐𬶻𬷕𬸱𬸹𬹎𬹤𬹳𬺖𬺞𮉯𮙋𮝺𮣷𮤸𮧵𮨶𮩞𮪥𮬤𮭪𮭰𮮇𮯙黾𰠘𰭁𰴞𰶏𰷮𰺤𰿊𰿖𱀀𱂌𱂻𱃠𱄊𱅬𱈜𱊵𱊽𱋮𱌉𱌙𱌽𱍈𱭘𱺰𲁙𲂗𲃆𲅃𲈡𲈥𲉈𲊥𲋃𲋑𲋓𲋬𲌋𲍙𲎊𲎓𲎫𲎮"
29 |
30 | ignoreroman_list = set()
31 |
32 | cache = {}
33 | headers = {}
34 | curr_messages = {}
35 |
36 | def is_unified_ideograph(char):
37 | return '\u4e00' <= char <= '\u9fff' or \
38 | '\u3400' <= char <= '\u4dbf' or \
39 | '\U00020000' <= char <= '\U0002a6df' or \
40 | '\U0002a700' <= char <= '\U0002ebef' or \
41 | '\U00030000' <= char <= '\U000323af' or \
42 | char in other_han
43 |
44 | def is_simplified_ideograph(char):
45 | return "䌶" <= char <= simplified_end[bisect(simplified_start, char) - 1]
46 |
47 | def get_additional_information(char):
48 | return ': Radicals' if '\u2e80' <= char <= '\u2fef' else \
49 | ': Symbols and Punctuation' if '\u3000' <= char <= '\u303f' else \
50 | ': Strokes' if '\u31c0' <= char <= '\u31ef' else \
51 | ': Compatibility Ideographs' if '\uf900' <= char <= '\ufaff' else \
52 | ': Compatibility Ideographs Supplement' if '\U0002f800' <= char <= '\U0002fa1f' else \
53 | ''
54 |
55 | simplified_ideograph = set()
56 | maybe_simplified_ideograph = set()
57 | with open("scripts/Unihan_Variants.txt", encoding="utf-8") as f:
58 | for line in f:
59 | line = line.rstrip("\n")
60 | if not line or line[0] == "#":
61 | continue
62 | code_point, variant, values = line.split("\t")
63 | if variant == "kTraditionalVariant":
64 | char = chr(int(code_point[2:], base=16))
65 | values = {chr(int(value[2:], base=16)) for value in values.split(" ")}
66 | if char not in values:
67 | simplified_ideograph.add(char)
68 | elif variant == "kSimplifiedVariant":
69 | char = chr(int(code_point[2:], base=16))
70 | values = {chr(int(value[2:], base=16)) for value in values.split(" ")}
71 | if char not in values:
72 | maybe_simplified_ideograph |= values
73 |
74 | maybe_simplified_ideograph -= {*"丑丢云仆余佣克冬准几出划刮制千卜卷厘只台合同后向吓咤咸回困奸姜家干御志恒才扑挽斗旋晒曲朱松板栗沈注漓灶症秋系累胡致舍芸范葱蒙蔑表谷辟郁采霉面"}
75 |
76 | def is_ascii_lowercase_letter(char):
77 | return 'a' <= char <= 'z'
78 |
79 | def is_ascii_letter(char):
80 | return 'A' <= char <= 'Z' or 'a' <= char <= 'z'
81 |
82 | def utf16_byte_length(char):
83 | return (char >= '\U00010000') + 1
84 |
85 | def column_start(column):
86 | return len(column) + 1
87 |
88 | if os.name == 'nt':
89 | def file(filename):
90 | import win32file
91 | import msvcrt
92 | return msvcrt.open_osfhandle(
93 | win32file
94 | .CreateFile(
95 | filename,
96 | win32file.GENERIC_READ,
97 | win32file.FILE_SHARE_DELETE | win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE,
98 | None,
99 | win32file.OPEN_EXISTING,
100 | win32file.FILE_ATTRIBUTE_NORMAL,
101 | None
102 | )
103 | .Detach(),
104 | os.O_RDONLY
105 | )
106 | else:
107 | def file(filename):
108 | return filename
109 |
110 | def lint(filename):
111 | with open(file(filename), encoding='utf-8') as f:
112 | new_messages = []
113 |
114 | first_line = next(f, "")
115 | column_names = first_line.rstrip('\n').split(',')
116 | chars_column_index = column_names.index("char") if "char" in column_names else None
117 | romans_column_index = column_names.index("jyutping") if "jyutping" in column_names else None
118 | start_column_index = min(chars_column_index or 0, romans_column_index or 0)
119 | end_column_index = max(chars_column_index or 0, romans_column_index or 0)
120 |
121 | if first_line != headers.get(filename):
122 | headers[filename] = first_line
123 | cache[filename] = {}
124 |
125 | for line_num, line in enumerate(f, 2):
126 | if line in cache[filename]:
127 | new_messages += [f'{filename}:{line_num}:{line}' for line in cache[filename][line]]
128 | continue
129 | messages = []
130 |
131 | def error(start, end, message):
132 | messages.append(f'{utf16_column_mapper[start]},{utf16_column_mapper[end]}: ERROR: {message}')
133 |
134 | def warn(start, end, message):
135 | messages.append(f'{utf16_column_mapper[start]},{utf16_column_mapper[end]}: WARNING: {message}')
136 |
137 | def yield_chars(chars, start):
138 | s = ''
139 | is_punctuation = True
140 | is_leading = True
141 | for i, char in enumerate(chars, start):
142 | if (char in non_han) != is_punctuation:
143 | if s:
144 | if is_punctuation:
145 | if is_leading:
146 | error(i - len(s), i, "Leading punctuation or space is not allowed")
147 | elif len(s) > 1:
148 | error(i - len(s), i, "Continuous punctuation or spaces are not allowed")
149 | else:
150 | yield (i, s)
151 | s = ''
152 | is_punctuation = not is_punctuation
153 | is_leading = False
154 | if not is_punctuation and s and not (is_ascii_lowercase_letter(char) and is_ascii_letter(s[-1])):
155 | yield (i, s)
156 | s = ''
157 | s += char
158 | if s:
159 | i += 1
160 | if is_punctuation:
161 | error(i - len(s), i, "Trailing punctuation or space is not allowed")
162 | else:
163 | yield (i, s)
164 |
165 | def yield_romans(romans, start):
166 | s = ''
167 | is_space = True
168 | is_leading = True
169 | for i, roman in enumerate(romans, start):
170 | if (roman == ' ') != is_space:
171 | if s:
172 | if is_space:
173 | if is_leading:
174 | error(i - len(s), i, "Leading space is not allowed")
175 | elif len(s) > 1:
176 | error(i - len(s), i, "Continuous spaces are not allowed")
177 | else:
178 | yield (i, s)
179 | s = ''
180 | is_space = not is_space
181 | is_leading = False
182 | s += roman
183 | if s:
184 | i += 1
185 | if is_space:
186 | error(i - len(s), i, "Trailing space is not allowed")
187 | else:
188 | yield (i, s)
189 |
190 | def validate_char(char_i, char):
191 | if not is_ascii_letter(char):
192 | if is_simplified_ideograph(char):
193 | error(char_i - len(char), char_i, f'Character "{char}" is definitely a simplified ideograph')
194 | elif char in simplified_ideograph:
195 | error(char_i - len(char), char_i, f'Character "{char}" is a simplified ideograph')
196 | elif char in maybe_simplified_ideograph:
197 | warn(char_i - len(char), char_i, f'Character "{char}" is possibly a simplified ideograph')
198 | elif not is_unified_ideograph(char):
199 | error(char_i - len(char), char_i, f'Invalid character "{char}"{get_additional_information(char)}')
200 |
201 | def validate_roman(roman_i, roman):
202 | status = jyutping.validate(roman, validation_set.get(filename, jyutping.TestSet.STRICT))
203 | if status == jyutping.ValidationStatus.UNCOMMON:
204 | warn(roman_i - len(roman), roman_i, f'Uncommon jyutping: "{roman}"')
205 | elif status == jyutping.ValidationStatus.INVALID:
206 | error(roman_i - len(roman), roman_i, f'Invalid jyutping: "{roman}"')
207 |
208 | utf16_column_mapper = list(accumulate(map(utf16_byte_length, line), initial=1))
209 | columns = line.rstrip('\n').split(',')
210 | columns_start = list(accumulate(map(column_start, columns), initial=0))
211 | columns_end = list(accumulate(map(column_start, columns[1:]), initial=len(columns[0])))
212 |
213 | if chars_column_index is not None and romans_column_index is not None:
214 | if chars_column_index < len(columns) > romans_column_index:
215 | length_mismatch = False
216 | chars = yield_chars(columns[chars_column_index], columns_start[chars_column_index])
217 | romans = yield_romans(columns[romans_column_index], columns_start[romans_column_index])
218 | for char_i, char in chars:
219 | validate_char(char_i, char)
220 | try:
221 | roman_i, roman = next(romans)
222 | except StopIteration:
223 | length_mismatch = True
224 | break
225 | if (char, roman) not in ignoreroman_list:
226 | validate_roman(roman_i, roman)
227 | if char in (multisyllable_allowlist if filename == 'char.csv' else two_syllable_char):
228 | try:
229 | roman_i, roman = next(romans)
230 | except StopIteration:
231 | length_mismatch = filename != 'char.csv'
232 | break
233 | validate_roman(roman_i, roman)
234 | try:
235 | next(romans)
236 | except StopIteration:
237 | pass
238 | else:
239 | length_mismatch = True
240 |
241 | if length_mismatch:
242 | warn(columns_start[start_column_index], columns_end[end_column_index], 'Word length does not match the number of syllables')
243 | else:
244 | error(0, columns_end[-1], "Invalid line")
245 | else:
246 | if chars_column_index is not None:
247 | if chars_column_index < len(columns):
248 | for char_i, char in yield_chars(columns[chars_column_index], columns_start[chars_column_index]):
249 | validate_char(char_i, char)
250 | else:
251 | error(0, columns_end[-1], "Invalid line")
252 | if romans_column_index is not None:
253 | if romans_column_index < len(columns):
254 | for roman_i, roman in yield_romans(columns[romans_column_index], columns_start[romans_column_index]):
255 | validate_roman(roman_i, roman)
256 | else:
257 | error(0, columns_end[-1], "Invalid line")
258 |
259 | for i, (name, value) in enumerate(zip(column_names, columns)):
260 | if name in column_values and value not in column_values[name]:
261 | error(columns_start[i], columns_end[i], f'Illegal value for column "{name}"')
262 |
263 | len_column_names = len(column_names)
264 | len_columns = len(columns)
265 | if len_column_names != len_columns:
266 | warn(columns_end[i], columns_end[-1], 'Number of columns does not match the header')
267 |
268 | new_messages += [f'{filename}:{line_num}:{line}' for line in messages]
269 | cache[filename][line] = messages
270 |
271 | curr_messages[filename] = "\n".join(new_messages)
272 |
273 | print("----- Message Starts -----")
274 | print(*curr_messages.values(), sep="\n")
275 | print("----- Message Ends -----")
276 |
277 | def start_linter():
278 | global ignoreroman_list, cache, headers, curr_messages
279 | with open(file('scripts/ignore.csv'), encoding='utf-8') as f:
280 | next(f, "")
281 | ignoreroman_list = {tuple(line.rstrip('\n').split(',')) for line in f}
282 | cache = {}
283 | headers = {}
284 | curr_messages = {}
285 | for filename in iglob("*.csv"):
286 | lint(filename)
287 |
288 | class EventHandler(FileSystemEventHandler):
289 | def on_modified(self, event):
290 | if event.src_path.endswith(".csv"):
291 | time.sleep(0.01)
292 | lint(basename(event.src_path))
293 |
294 | class RestartHandler(FileSystemEventHandler):
295 | def on_modified(self, event):
296 | if event.src_path.endswith(".csv"):
297 | time.sleep(0.01)
298 | start_linter()
299 |
300 | start_linter()
301 |
302 | observer = Observer()
303 | observer.schedule(EventHandler(), ".")
304 | observer.schedule(RestartHandler(), "./scripts")
305 | observer.start()
306 | try:
307 | while True:
308 | time.sleep(1)
309 | except KeyboardInterrupt:
310 | observer.stop()
311 | observer.join()
312 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Attribution 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More_considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution 4.0 International Public License
58 |
59 | By exercising the Licensed Rights (defined below), You accept and agree
60 | to be bound by the terms and conditions of this Creative Commons
61 | Attribution 4.0 International Public License ("Public License"). To the
62 | extent this Public License may be interpreted as a contract, You are
63 | granted the Licensed Rights in consideration of Your acceptance of
64 | these terms and conditions, and the Licensor grants You such rights in
65 | consideration of benefits the Licensor receives from making the
66 | Licensed Material available under these terms and conditions.
67 |
68 |
69 | Section 1 -- Definitions.
70 |
71 | a. Adapted Material means material subject to Copyright and Similar
72 | Rights that is derived from or based upon the Licensed Material
73 | and in which the Licensed Material is translated, altered,
74 | arranged, transformed, or otherwise modified in a manner requiring
75 | permission under the Copyright and Similar Rights held by the
76 | Licensor. For purposes of this Public License, where the Licensed
77 | Material is a musical work, performance, or sound recording,
78 | Adapted Material is always produced where the Licensed Material is
79 | synched in timed relation with a moving image.
80 |
81 | b. Adapter's License means the license You apply to Your Copyright
82 | and Similar Rights in Your contributions to Adapted Material in
83 | accordance with the terms and conditions of this Public License.
84 |
85 | c. Copyright and Similar Rights means copyright and/or similar rights
86 | closely related to copyright including, without limitation,
87 | performance, broadcast, sound recording, and Sui Generis Database
88 | Rights, without regard to how the rights are labeled or
89 | categorized. For purposes of this Public License, the rights
90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
91 | Rights.
92 |
93 | d. Effective Technological Measures means those measures that, in the
94 | absence of proper authority, may not be circumvented under laws
95 | fulfilling obligations under Article 11 of the WIPO Copyright
96 | Treaty adopted on December 20, 1996, and/or similar international
97 | agreements.
98 |
99 | e. Exceptions and Limitations means fair use, fair dealing, and/or
100 | any other exception or limitation to Copyright and Similar Rights
101 | that applies to Your use of the Licensed Material.
102 |
103 | f. Licensed Material means the artistic or literary work, database,
104 | or other material to which the Licensor applied this Public
105 | License.
106 |
107 | g. Licensed Rights means the rights granted to You subject to the
108 | terms and conditions of this Public License, which are limited to
109 | all Copyright and Similar Rights that apply to Your use of the
110 | Licensed Material and that the Licensor has authority to license.
111 |
112 | h. Licensor means the individual(s) or entity(ies) granting rights
113 | under this Public License.
114 |
115 | i. Share means to provide material to the public by any means or
116 | process that requires permission under the Licensed Rights, such
117 | as reproduction, public display, public performance, distribution,
118 | dissemination, communication, or importation, and to make material
119 | available to the public including in ways that members of the
120 | public may access the material from a place and at a time
121 | individually chosen by them.
122 |
123 | j. Sui Generis Database Rights means rights other than copyright
124 | resulting from Directive 96/9/EC of the European Parliament and of
125 | the Council of 11 March 1996 on the legal protection of databases,
126 | as amended and/or succeeded, as well as other essentially
127 | equivalent rights anywhere in the world.
128 |
129 | k. You means the individual or entity exercising the Licensed Rights
130 | under this Public License. Your has a corresponding meaning.
131 |
132 |
133 | Section 2 -- Scope.
134 |
135 | a. License grant.
136 |
137 | 1. Subject to the terms and conditions of this Public License,
138 | the Licensor hereby grants You a worldwide, royalty-free,
139 | non-sublicensable, non-exclusive, irrevocable license to
140 | exercise the Licensed Rights in the Licensed Material to:
141 |
142 | a. reproduce and Share the Licensed Material, in whole or
143 | in part; and
144 |
145 | b. produce, reproduce, and Share Adapted Material.
146 |
147 | 2. Exceptions and Limitations. For the avoidance of doubt, where
148 | Exceptions and Limitations apply to Your use, this Public
149 | License does not apply, and You do not need to comply with
150 | its terms and conditions.
151 |
152 | 3. Term. The term of this Public License is specified in Section
153 | 6(a).
154 |
155 | 4. Media and formats; technical modifications allowed. The
156 | Licensor authorizes You to exercise the Licensed Rights in
157 | all media and formats whether now known or hereafter created,
158 | and to make technical modifications necessary to do so. The
159 | Licensor waives and/or agrees not to assert any right or
160 | authority to forbid You from making technical modifications
161 | necessary to exercise the Licensed Rights, including
162 | technical modifications necessary to circumvent Effective
163 | Technological Measures. For purposes of this Public License,
164 | simply making modifications authorized by this Section 2(a)
165 | (4) never produces Adapted Material.
166 |
167 | 5. Downstream recipients.
168 |
169 | a. Offer from the Licensor -- Licensed Material. Every
170 | recipient of the Licensed Material automatically
171 | receives an offer from the Licensor to exercise the
172 | Licensed Rights under the terms and conditions of this
173 | Public License.
174 |
175 | b. No downstream restrictions. You may not offer or impose
176 | any additional or different terms or conditions on, or
177 | apply any Effective Technological Measures to, the
178 | Licensed Material if doing so restricts exercise of the
179 | Licensed Rights by any recipient of the Licensed
180 | Material.
181 |
182 | 6. No endorsement. Nothing in this Public License constitutes or
183 | may be construed as permission to assert or imply that You
184 | are, or that Your use of the Licensed Material is, connected
185 | with, or sponsored, endorsed, or granted official status by,
186 | the Licensor or others designated to receive attribution as
187 | provided in Section 3(a)(1)(A)(i).
188 |
189 | b. Other rights.
190 |
191 | 1. Moral rights, such as the right of integrity, are not
192 | licensed under this Public License, nor are publicity,
193 | privacy, and/or other similar personality rights; however, to
194 | the extent possible, the Licensor waives and/or agrees not to
195 | assert any such rights held by the Licensor to the limited
196 | extent necessary to allow You to exercise the Licensed
197 | Rights, but not otherwise.
198 |
199 | 2. Patent and trademark rights are not licensed under this
200 | Public License.
201 |
202 | 3. To the extent possible, the Licensor waives any right to
203 | collect royalties from You for the exercise of the Licensed
204 | Rights, whether directly or through a collecting society
205 | under any voluntary or waivable statutory or compulsory
206 | licensing scheme. In all other cases the Licensor expressly
207 | reserves any right to collect such royalties.
208 |
209 |
210 | Section 3 -- License Conditions.
211 |
212 | Your exercise of the Licensed Rights is expressly made subject to the
213 | following conditions.
214 |
215 | a. Attribution.
216 |
217 | 1. If You Share the Licensed Material (including in modified
218 | form), You must:
219 |
220 | a. retain the following if it is supplied by the Licensor
221 | with the Licensed Material:
222 |
223 | i. identification of the creator(s) of the Licensed
224 | Material and any others designated to receive
225 | attribution, in any reasonable manner requested by
226 | the Licensor (including by pseudonym if
227 | designated);
228 |
229 | ii. a copyright notice;
230 |
231 | iii. a notice that refers to this Public License;
232 |
233 | iv. a notice that refers to the disclaimer of
234 | warranties;
235 |
236 | v. a URI or hyperlink to the Licensed Material to the
237 | extent reasonably practicable;
238 |
239 | b. indicate if You modified the Licensed Material and
240 | retain an indication of any previous modifications; and
241 |
242 | c. indicate the Licensed Material is licensed under this
243 | Public License, and include the text of, or the URI or
244 | hyperlink to, this Public License.
245 |
246 | 2. You may satisfy the conditions in Section 3(a)(1) in any
247 | reasonable manner based on the medium, means, and context in
248 | which You Share the Licensed Material. For example, it may be
249 | reasonable to satisfy the conditions by providing a URI or
250 | hyperlink to a resource that includes the required
251 | information.
252 |
253 | 3. If requested by the Licensor, You must remove any of the
254 | information required by Section 3(a)(1)(A) to the extent
255 | reasonably practicable.
256 |
257 | 4. If You Share Adapted Material You produce, the Adapter's
258 | License You apply must not prevent recipients of the Adapted
259 | Material from complying with this Public License.
260 |
261 |
262 | Section 4 -- Sui Generis Database Rights.
263 |
264 | Where the Licensed Rights include Sui Generis Database Rights that
265 | apply to Your use of the Licensed Material:
266 |
267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
268 | to extract, reuse, reproduce, and Share all or a substantial
269 | portion of the contents of the database;
270 |
271 | b. if You include all or a substantial portion of the database
272 | contents in a database in which You have Sui Generis Database
273 | Rights, then the database in which You have Sui Generis Database
274 | Rights (but not its individual contents) is Adapted Material; and
275 |
276 | c. You must comply with the conditions in Section 3(a) if You Share
277 | all or a substantial portion of the contents of the database.
278 |
279 | For the avoidance of doubt, this Section 4 supplements and does not
280 | replace Your obligations under this Public License where the Licensed
281 | Rights include other Copyright and Similar Rights.
282 |
283 |
284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
285 |
286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
296 |
297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
306 |
307 | c. The disclaimer of warranties and limitation of liability provided
308 | above shall be interpreted in a manner that, to the extent
309 | possible, most closely approximates an absolute disclaimer and
310 | waiver of all liability.
311 |
312 |
313 | Section 6 -- Term and Termination.
314 |
315 | a. This Public License applies for the term of the Copyright and
316 | Similar Rights licensed here. However, if You fail to comply with
317 | this Public License, then Your rights under this Public License
318 | terminate automatically.
319 |
320 | b. Where Your right to use the Licensed Material has terminated under
321 | Section 6(a), it reinstates:
322 |
323 | 1. automatically as of the date the violation is cured, provided
324 | it is cured within 30 days of Your discovery of the
325 | violation; or
326 |
327 | 2. upon express reinstatement by the Licensor.
328 |
329 | For the avoidance of doubt, this Section 6(b) does not affect any
330 | right the Licensor may have to seek remedies for Your violations
331 | of this Public License.
332 |
333 | c. For the avoidance of doubt, the Licensor may also offer the
334 | Licensed Material under separate terms or conditions or stop
335 | distributing the Licensed Material at any time; however, doing so
336 | will not terminate this Public License.
337 |
338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
339 | License.
340 |
341 |
342 | Section 7 -- Other Terms and Conditions.
343 |
344 | a. The Licensor shall not be bound by any additional or different
345 | terms or conditions communicated by You unless expressly agreed.
346 |
347 | b. Any arrangements, understandings, or agreements regarding the
348 | Licensed Material not stated herein are separate from and
349 | independent of the terms and conditions of this Public License.
350 |
351 |
352 | Section 8 -- Interpretation.
353 |
354 | a. For the avoidance of doubt, this Public License does not, and
355 | shall not be interpreted to, reduce, limit, restrict, or impose
356 | conditions on any use of the Licensed Material that could lawfully
357 | be made without permission under this Public License.
358 |
359 | b. To the extent possible, if any provision of this Public License is
360 | deemed unenforceable, it shall be automatically reformed to the
361 | minimum extent necessary to make it enforceable. If the provision
362 | cannot be reformed, it shall be severed from this Public License
363 | without affecting the enforceability of the remaining terms and
364 | conditions.
365 |
366 | c. No term or condition of this Public License will be waived and no
367 | failure to comply consented to unless expressly agreed to by the
368 | Licensor.
369 |
370 | d. Nothing in this Public License constitutes or may be interpreted
371 | as a limitation upon, or waiver of, any privileges and immunities
372 | that apply to the Licensor or You, including from the legal
373 | processes of any jurisdiction or authority.
374 |
375 |
376 | =======================================================================
377 |
378 | Creative Commons is not a party to its public
379 | licenses. Notwithstanding, Creative Commons may elect to apply one of
380 | its public licenses to material it publishes and in those instances
381 | will be considered the “Licensor.” The text of the Creative Commons
382 | public licenses is dedicated to the public domain under the CC0 Public
383 | Domain Dedication. Except for the limited purpose of indicating that
384 | material is shared under a Creative Commons public license or as
385 | otherwise permitted by the Creative Commons policies published at
386 | creativecommons.org/policies, Creative Commons does not authorize the
387 | use of the trademark "Creative Commons" or any other trademark or logo
388 | of Creative Commons without its prior written consent including,
389 | without limitation, in connection with any unauthorized modifications
390 | to any of its public licenses or any other arrangements,
391 | understandings, or agreements concerning use of licensed material. For
392 | the avoidance of doubt, this paragraph does not form part of the
393 | public licenses.
394 |
395 | Creative Commons may be contacted at creativecommons.org.
396 |
--------------------------------------------------------------------------------
/fixed_expressions.csv:
--------------------------------------------------------------------------------
1 | char,jyutping
2 | 一不做,二不休,jat1 bat1 zou6 ji6 bat1 jau1
3 | 一人做事一人當,jat1 jan4 zou6 si6 jat1 jan4 dong1
4 | 一人得道,雞犬升天,jat1 jan4 dak1 dou6 gai1 hyun2 sing1 tin1
5 | 一人計短,二人計長,jat1 jan4 gai3 dyun2 ji6 jan4 gai3 coeng4
6 | 一個做好,一個做醜,jat1 go3 zou6 hou2 jat1 go3 zou6 cau2
7 | 一個巴掌拍不響,jat1 go3 baa1 zoeng2 paak3 bat1 hoeng2
8 | 一個蘿蔔一個坑,jat1 go3 lo4 baak6 jat1 go3 haang1
9 | 一個酸梅兩個覈,jat1 go3 syun1 mui4 loeng5 go3 wat6
10 | 一個願打,一個願捱,jat1 go3 jyun6 daa2 jat1 go3 jyun6 ngaai4
11 | 一分耕耘,一分收穫,jat1 fan1 gaang1 wan4 jat1 fan1 sau1 wok6
12 | 一分錢,一分貨,jat1 fan1 cin4 jat1 fan1 fo3
13 | 一啖砂糖一啖屎,jat1 daam6 saa1 tong4 jat1 daam6 si2
14 | 一回生,兩回熟,jat1 wui4 sang1 loeng5 wui4 suk6
15 | 一場歡喜一場空,jat1 coeng4 fun1 hei2 jat1 coeng4 hung1
16 | 一夜夫妻百夜恩,jat1 je6 fu1 cai1 baak3 je6 jan1
17 | 一夫當關,萬夫莫敵,jat1 fu1 dong1 gwaan1 maan6 fu1 mok6 dik6
18 | 一夫當關,萬夫莫開,jat1 fu1 dong1 gwaan1 maan6 fu1 mok6 hoi1
19 | 一失足成千古恨,jat1 sat1 zuk1 sing4 cin1 gu2 han6
20 | 一子錯,滿盤皆落索,jat1 zi2 co3 mun5 pun4 gaai1 lok6 sok3
21 | 一家便宜兩家着,jat1 gaa1 pin4 ji4 loeng5 gaa1 zoek6
22 | 一家唔知一家事,jat1 gaa1 m4 zi1 jat1 gaa1 si6
23 | 一寸光陰一寸金,寸金難買寸光陰,jat1 cyun3 gwong1 jam1 jat1 cyun3 gam1 cyun3 gam1 naan4 maai5 cyun3 gwong1 jam1
24 | 一將功成萬骨枯,jat1 zoeng3 gung1 sing4 maan6 gwat1 fu1
25 | 一山還有一山高,jat1 saan1 waan4 jau5 jat1 saan1 gou1
26 | 一年之計在於春,一日之計在於晨,jat1 nin4 zi1 gai3 zoi6 jyu1 ceon1 jat1 jat6 zi1 gai3 zoi6 jyu1 san4
27 | 一年被蛇咬,十年怕井繩,jat1 nin4 bei6 se4 ngaau5 sap6 nin4 paa3 zeng2 sing4
28 | 一日不見,如隔三秋,jat1 jat6 bat1 gin3 jyu4 gaak3 saam1 cau1
29 | 一日之計在於晨,jat1 jat6 zi1 gai3 zoi6 jyu1 san4
30 | 一日爲師,終身爲父,jat1 jat6 wai4 si1 zung1 san1 wai4 fu6
31 | 一朝天子一朝臣,jat1 ciu4 tin1 zi2 jat1 ciu4 san4
32 | 一朝被蛇咬,十年怕井繩,jat1 ziu1 bei6 se4 ngaau5 sap6 nin4 paa3 zeng2 sing4
33 | 一本通書睇到老,jat1 bun2 tung1 syu1 tai2 dou3 lou5
34 | 一朵鮮花插在牛糞上,jat1 do2 sin1 faa1 caap3 zoi6 ngau4 fan3 soeng5
35 | 一樣米養百樣人,jat1 joeng6 mai5 joeng5 baak3 joeng6 jan4
36 | 一次生,兩次熟,jat1 ci3 saang1 loeng5 ci3 suk6
37 | 一波未平,一波又起,jat1 bo1 mei6 ping4 jat1 bo1 jau6 hei2
38 | 一物剋一物,jat1 mat6 hak1 jat1 mat6
39 | 一物治一物,糯米治木虱,jat1 mat6 zi6 jat1 mat6 no6 mai5 zi6 muk6 sat1
40 | 一物治一物,糯米治木蝨,jat1 mat6 zi6 jat1 mat6 no6 mai5 zi6 muk6 sat1
41 | 一理通,百理明,jat1 lei5 tung1 baak3 lei5 ming4
42 | 一白遮三醜,jat1 baak6 ze1 saam1 cau2
43 | 一着不慎,滿盤皆輸,jat1 zoek6 bat1 san6 mun5 pun4 gaai1 syu1
44 | 一竹篙打一船人,jat1 zuk1 gou1 daa2 jat1 syun4 jan4
45 | 一竹篙打晒一船人,jat1 zuk1 gou1 daa2 saai3 jat1 syun4 jan4
46 | 一竹篙打死一船人,jat1 zuk1 gou1 daa2 sei2 jat1 syun4 jan4
47 | 一竹篙揇沉一船人,jat1 zuk1 gou1 naam5 cam4 jat1 syun4 jan4
48 | 一粒老鼠屎壞了一鍋粥,jat1 lap1 lou5 syu2 si2 waai6 liu5 jat1 wo1 zuk1
49 | 一而再,再而三,jat1 ji4 zoi3 zoi3 ji4 saam1
50 | 一言既出駟馬難追,jat1 jin4 gei3 ceot1 si3 maa5 naan4 zeoi1
51 | 一言既出,駟馬難追,jat1 jin4 gei3 ceot1 si3 maa5 naan4 zeoi1
52 | 一言興邦,一言喪邦,jat1 jin4 hing1 bong1 jat1 jin4 song3 bong1
53 | 一言驚醒夢中人,jat1 jin4 ging1 sing2 mung6 zung1 jan4
54 | 一試便知龍與鳯,jat1 si3 bin6 zi1 lung4 jyu5 fung6
55 | 一諾值千金,jat1 nok6 zik6 cin1 gam1
56 | 一講曹操,曹操就到,jat1 gong2 cou4 cou1 cou4 cou1 zau6 dou3
57 | 一醉解千愁,jat1 zeoi3 gaai2 cin1 sau4
58 | 一雞死,一雞鳴,jat1 gai1 sei2 jat1 gai1 ming4
59 | 一顆老鼠屎壞了一鍋粥,jat1 fo2 lou5 syu2 si2 waai6 liu5 jat1 wo1 zuk1
60 | 七月有立秋,遲禾冇得收,cat1 jyut6 jau5 laap6 cau1 ci4 wo4 mou5 dak1 sau1
61 | 丈二和尚,摸不着頭腦,zoeng6 ji6 wo4 soeng2 mo2 bat1 zoek6 tau4 nou5
62 | 丈二金剛,摸不着頭腦,zoeng6 ji6 gam1 gong1 mo2 bat1 zoek6 tau4 nou5
63 | 三人行,必有我師,saam1 jan4 hang4 bit1 jau5 ngo5 si1
64 | 三個女人一個墟,saam1 go3 neoi5 jan2 jat1 go3 heoi1
65 | 三個女人一臺戲,saam1 go3 neoi5 jan4 jat1 toi4 hei3
66 | 三個臭皮匠,勝過一個諸葛亮,saam1 go3 cau3 pei4 zoeng6 sing3 gwo3 jat1 go3 zyu1 got3 loeng6
67 | 三個臭皮匠,賽過諸葛亮,saam1 go3 cau3 pei4 zoeng6 coi3 gwo3 zyu1 got3 loeng6
68 | 三個臭皮匠,頂個諸葛亮,saam1 go3 cau3 pei4 zoeng6 ding2 go3 zyu1 got3 loeng6
69 | 三十六計,走爲上策,saam1 sap6 luk6 gai3 zau2 wai4 soeng6 caak3
70 | 三天不打,上房揭瓦,saam1 tin1 bat1 daa2 soeng6 fong4 kit3 ngaa5
71 | 三天打魚,兩天曬網,saam1 tin1 daa2 jyu4 loeng5 tin1 saai3 mong5
72 | 三年唔發市,發市當三年,saam1 nin4 m4 faat3 si5 faat3 si5 dong3 saam1 nin4
73 | 三更窮五更富,saam1 gaang1 kung4 ng5 gaang1 fu3
74 | 三歲定八十,saam1 seoi3 ding6 baat3 sap6
75 | 三軍未動,saam1 gwan1 mei6 dung6
76 | 上一次當,學一次乖,soeng5 jat1 ci3 dong3 hok6 jat1 ci3 gwaai1
77 | 上天無路,入地無門,soeng5 tin1 mou4 lou6 jap6 dei6 mou4 mun4
78 | 上屋搬下屋,唔見一籮穀,soeng6 uk1 bun1 haa6 uk1 m4 gin3 jat1 lo4 guk1
79 | 上得山多終遇虎,soeng5 dak1 saan1 do1 zung1 jyu6 fu2
80 | 上得牀嚟掀被冚,soeng5 dak1 cong4 lai4 hin1 pei5 kam2
81 | 上有天堂,下有蘇杭,soeng6 jau5 tin1 tong4 haa6 jau5 sou1 hong4
82 | 上有政策,下有對策,soeng6 jau5 zing3 caak3 haa6 jau5 deoi3 caak3
83 | 上梁不正下梁歪,soeng5 loeng4 bat1 zing3 haa6 loeng4 waai1
84 | 上樑不正下樑歪,soeng6 loeng4 bat1 zeng3 haa6 loeng4 waai1
85 | 上錯天堂投錯胎,soeng5 co3 tin1 tong4 tau4 co3 toi1
86 | 上陣不離父子兵,soeng5 zan6 bat1 lei4 fu6 zi2 bing1
87 | 上面蒸鬆糕,下面賣涼粉,soeng6 min6 zing1 sung1 gou1 haa6 min6 maai6 loeng4 fan2
88 | 不以物喜,不以己悲,bat1 ji5 mat6 hei2 bat1 ji5 gei2 bei1
89 | 不以規矩,不成方圓,bat1 ji5 kwai1 geoi2 bat1 sing4 fong1 jyun4
90 | 不做虧心事,不怕鬼敲門,bat1 zou6 kwai1 sam1 si6 bat1 paa3 gwai2 haau1 mun4
91 | 不入虎穴,焉得虎子,bat1 jap6 fu2 jyut6 jin1 dak1 fu2 zi2
92 | 不共戴天之仇,bat1 gung6 daai3 tin1 zi1 sau4
93 | 不分男女老幼,bat1 fan1 naam4 neoi5 lou5 jau3
94 | 不分輕重緩急,bat1 fan1 hing1 cung5 wun6 gap1
95 | 不分青紅皁白,bat1 fan1 cing1 hung4 zou6 baak6
96 | 不到長城非好漢,bat1 dou3 coeng4 sing4 fei1 hou2 hon3
97 | 不到黃河心不死,bat1 dou3 wong4 ho4 sam1 bat1 sei2
98 | 不問前因後果,bat1 man6 cin4 jan1 hau6 gwo2
99 | 不問是非曲直,bat1 man6 si6 fei1 kuk1 zik6
100 | 不問青紅皁白,bat1 man6 cing1 hung4 zou6 baak6
101 | 不喫人間菸火,bat1 hek3 jan4 gaan1 jin1 fo2
102 | 不在其位不謀其政,bat1 zoi6 kei4 wai6 bat1 mau4 kei4 zing3
103 | 不孝有三,無後爲大,bat1 haau3 jau5 saam1 mou4 hau6 wai4 daai6
104 | 不幸中之大幸,bat1 hang6 zung1 zi1 daai6 hang6
105 | 不得其門而入,bat1 dak1 kei4 mun4 ji4 jap6
106 | 不得已而爲之,bat1 dak1 ji5 ji4 wai4 zi1
107 | 不怕一萬,就怕萬一,bat1 paa3 jat1 maan6 zau6 paa3 maan6 jat1
108 | 不怕不識貨,只怕貨比貨,bat1 paa3 bat1 sik1 fo3 zi2 paa3 fo3 bei2 fo3
109 | 不怕不識貨,就怕貨比貨,bat1 paa3 bat1 sik1 fo3 zau6 paa3 fo3 bei2 fo3
110 | 不怕官,只怕管,bat1 paa3 gun1 zi2 paa3 gun2
111 | 不怕神一樣的對手,就怕豬一樣的隊友,bat1 paa3 san4 jat1 joeng6 dik1 deoi3 sau2 zau6 paa3 zyu1 jat1 joeng6 dik1 deoi6 jau5
112 | 不患寡而患不均,bat1 waan6 gwaa2 ji4 waan6 bat1 gwan1
113 | 不成功便成仁,bat1 sing4 gung1 bin6 sing4 jan4
114 | 不打不成器,bat1 daa2 bat1 sing4 hei3
115 | 不打不相識,bat1 daa2 bat1 soeng1 sik1
116 | 不是一家人不進一家門,bat1 si6 jat1 gaa1 jan4 bat1 zeon3 jat1 gaa1 mun4
117 | 不是冤家不聚頭,bat1 si6 jyun1 gaa1 bat1 zeoi6 tau4
118 | 不求有功,但求無過,bat1 kau4 jau5 gung1 daan6 kau4 mou4 gwo3
119 | 不爲五斗米折腰,bat1 wai6 ng5 dau2 mai5 zit3 jiu1
120 | 不理好醜,但求就手,bat1 lei5 hou2 cau2 daan6 kau4 zau6 sau2
121 | 不知其所以然,bat1 zi1 kei4 so2 ji5 jin4
122 | 不知天高地厚,bat1 zi1 tin1 gou1 dei6 hau5
123 | 不知者不罪,bat1 zi1 ze2 bat1 zeoi6
124 | 不管三七二十一,bat1 gun2 saam1 cat1 ji6 sap6 jat1
125 | 不經一事,不長一智,bat1 ging1 jat1 si6 bat1 zoeng2 jat1 zi3
126 | 不自由,毋寧死,bat1 zi6 jau4 mou4 ning4 sei2
127 | 不見棺材不掉淚,bat1 gin3 gun1 coi4 bat1 diu6 leoi6
128 | 不見棺材不落淚,bat1 gin3 gun1 coi4 bat1 lok6 leoi6
129 | 不識廬山真面目,bat1 sik1 lou4 saan1 zan1 min6 muk6
130 | 不費吹灰之力,bat1 fai3 ceoi1 fui1 zi1 lik6
131 | 不食人間煙火,bat1 sik6 jan4 gaan1 jin1 fo2
132 | 且聽下回分解,ce2 ting1 haa6 wui4 fan1 gaai2
133 | 世上無難事,只怕有心人,sai3 soeng5 mou4 naan4 si6 zi2 paa3 jau5 sam1 jan4
134 | 亞茂整餅,冇嗰樣整嗰樣,aa3 mau6 zing2 beng2 mou5 go2 joeng2 zing2 go2 joeng2
135 | 人一世,物一世,jan4 jat1 sai3 mat6 jat1 sai3
136 | 人不可貌相,海水不可斗量,jan4 bat1 ho2 maau6 soeng3 hoi2 seoi2 bat1 ho2 dau2 loeng6
137 | 人不爲己,天誅地滅,jan4 bat1 wai6 gei2 tin1 zyu1 dei6 mit6
138 | 人不犯我,我不犯人,jan4 bat1 faan6 ngo5 ngo5 bat1 faan6 jan4
139 | 人之初,性本善,jan4 zi1 co1 sing3 bun2 sin6
140 | 人之將死,其言也善,jan4 zi1 zoeng1 sei2 kei4 jin4 jaa5 sin6
141 | 人人得而誅之,jan4 jan4 dak1 ji4 zyu1 zi1
142 | 人前人後兩個樣,jan4 cin4 jan4 hau6 loeng5 go3 joeng2
143 | 人又老,錢又冇,jan4 jau6 lou5 cin2 jau6 mou5
144 | 人唔似人,鬼唔似鬼,jan4 m4 ci5 jan4 gwai2 m4 ci5 gwai2
145 | 人唔笑,狗都吠,jan4 m4 siu3 gau2 dou1 fai6
146 | 人在屋簷下,不得不低頭,jan4 zoi6 uk1 jim4 haa6 bat1 dak1 bat1 dai1 tau4
147 | 人在江湖,身不由己,jan4 zoi6 gong1 wu4 san1 bat1 jau4 gei2
148 | 人外有人,天外有天,jan4 ngoi6 jau5 jan4 tin1 ngoi6 jau5 tin1
149 | 人多好辦事,jan4 do1 hou2 baan6 si6
150 | 人如其字,jan4 jyu4 kei4 zi6
151 | 人往高處走,水往低處流,jan4 wong5 gou1 cyu3 zau2 seoi2 wong5 dai1 cyu3 lau4
152 | 人怕出名豬怕壯,jan4 paa3 ceot1 meng2 zyu1 paa3 zong3
153 | 人怕出名豬怕肥,jan4 paa3 ceot1 meng2 zyu1 paa3 fei4
154 | 人有三衰六旺,jan4 jau5 saam1 seoi1 luk6 wong6
155 | 人有失手,馬有失蹄,jan4 jau5 sat1 sau2 maa5 jau5 sat1 tai4
156 | 人死如燈滅,jan4 sei2 jyu4 dang1 mit6
157 | 人比人,比死人,jan4 bei2 jan4 bei2 sei2 jan4
158 | 人比人,氣死人,jan4 bei2 jan4 hei3 sei2 jan4
159 | 人無千日好,花無百日紅,jan4 mou4 cin1 jat6 hou2 faa1 mou4 baak3 jat6 hung4
160 | 人爲萬物之靈,jan4 wai4 maan6 mat6 zi1 ling4
161 | 人而無信,不知其可,jan4 ji4 mou4 seon3 bat1 zi1 kei4 ho2
162 | 人若犯我,我必犯人,jan4 joek6 faan6 ngo5 ngo5 bit1 faan6 jan4
163 | 人非生而知之者,熟能無惑,jan4 fei1 sang1 ji4 zi1 zi1 ze2 suk6 nang4 mou4 waak6
164 | 人非聖賢,孰能無過,jan4 fei1 sing3 jin4 suk6 nang4 mou4 gwo3
165 | 仁者見仁,智者見智,jan4 ze2 gin3 jan4 zi3 ze2 gin3 zi3
166 | 以不變應萬變,ji5 bat1 bin3 jing3 maan6 bin3
167 | 以其人之道,還治其人之身,ji5 kei4 jan4 zi1 dou6 waan4 zi6 kei4 jan4 zi1 san1
168 | 以子之矛,攻子之盾,ji5 zi2 zi1 maau4 gung1 zi2 zi1 teon5
169 | 以小人之心,度君子之腹,ji5 siu2 jan4 zi1 sam1 dok6 gwan1 zi2 zi1 fuk1
170 | 以直報怨,以德報德,ji5 zik6 bou3 jyun3 ji5 dak1 bou3 dak1
171 | 以眼還眼,以牙還牙,ji5 ngaan5 waan4 ngaan5 ji5 ngaa4 waan4 ngaa4
172 | 以言代法,以權壓法,ji5 jin4 doi6 faat3 ji5 kyun4 aat3 faat3
173 | 何不食肉糜,ho4 bat1 sik6 juk6 mei4
174 | 何樂而不爲,ho4 lok6 ji4 bat1 wai4
175 | 佛要金裝,人要衣裝,fat6 jiu3 gam1 zong1 jan4 jiu3 ji1 zong1
176 | 你做初一,我做十五,nei5 zou6 co1 jat1 ngo5 zou6 sap6 ng5
177 | 你敬我一尺,我敬你一丈,nei5 ging3 ngo5 jat1 cek3 ngo5 ging3 nei5 jat1 zoeng6
178 | 你有你,我有我,nei5 jau5 nei5 ngo5 jau5 ngo5
179 | 你有張良計,我有過牆梯,nei5 jau5 zoeng1 loeng4 gai3 ngo5 jau5 gwo3 coeng4 tai1
180 | 你走你嘅陽關道,我過我嘅獨木橋,nei5 zau2 nei5 ge3 joeng4 gwaan1 dou6 ngo5 gwo3 ngo5 ge3 duk6 muk6 kiu4
181 | 你走你的陽關道,我過我的獨木橋,nei5 zau2 nei5 dik1 joeng4 gwaan1 dou6 ngo5 gwo3 ngo5 dik1 duk6 muk6 kiu4
182 | 你還你,我還我,nei5 waan4 nei5 ngo5 waan4 ngo5
183 | 來得容易,去得快,loi4 dak1 jung4 ji6 heoi3 dak1 faai3
184 | 來得早不如來得巧,loi4 dak1 zou2 bat1 jyu4 loi4 dak1 haau2
185 | 來無影,去無蹤,loi4 mou4 jing2 heoi3 mou4 zung1
186 | 來者不善,善者不來,loi4 ze2 bat1 sin6 sin6 ze2 bat1 loi4
187 | 來而不往非禮也,loi4 ji4 bat1 wong5 fei1 lai5 jaa5
188 | 來說是非者,便是是非人,loi4 syut3 si6 fei1 ze2 bin6 si6 si6 fei1 jan4
189 | 做又三十六,唔做又三十六,zou6 jau6 saa1 aa6 luk6 m4 zou6 jau6 saa1 aa6 luk6
190 | 做又三十六,唔做又三十六,zou6 jau6 saam1 sap6 luk6 m4 zou6 jau6 saam1 sap6 luk6
191 | 做又三廿六,唔做又三廿六,zou6 jau6 saam1 jaa6 luk6 m4 zou6 jau6 saam1 jaa6 luk6
192 | 做又卅六,唔做又卅六,zou6 jau6 saa1 aa6 luk6 m4 zou6 jau6 saa1 aa6 luk6
193 | 做場大龍鳳,zou6 coeng4 daai6 lung4 fung6
194 | 做慣乞兒懶做官,zou6 gwaan3 hat1 ji1 laan5 zou6 gun1
195 | 做戲做全套,zou6 hei3 zou6 cyun4 tou3
196 | 做生不如做熟,zou6 saang1 bat1 jyu4 zou6 suk6
197 | 側側膊,唔多覺,zak1 zak1 bok3 m4 do1 gok3
198 | 偷得浮生半日閒,tau1 dak1 fau4 sang1 bun3 jat6 haan4
199 | 偷雞不成蝕把米,tau1 gai1 bat1 sing4 sik6 baa2 mai5
200 | 偷雞唔到蝕揸米,tau1 gai1 m4 dou2 sit6 zaa1 mai5
201 | 偷雞唔成蝕揸米,tau1 gai1 m4 seng4 sit6 zaa1 mai5
202 | 傻人有傻福,so4 jan4 jau5 so4 fuk1
203 | 先下手爲強,sin1 haa6 sau2 wai4 koeng4
204 | 先使未來錢,sin1 sai2 mei6 loi4 cin4
205 | 先天下之憂而憂,後天下之樂而樂,sin1 tin1 haa6 zi1 jau1 ji4 jau1 hau6 tin1 haa6 zi1 lok6 ji4 lok6
206 | 先小人,後君子,sin1 siu2 jan4 hau6 gwan1 zi2
207 | 先敬羅衣後敬人,sin1 ging3 lo4 ji1 hau6 ging3 jan4
208 | 兒不嫌母醜,狗不嫌家貧,ji4 bat1 jim4 mou5 cau2 gau2 bat1 jim4 gaa1 pan4
209 | 兒孫自有兒孫福,ji4 syun1 zi6 jau5 ji4 syun1 fuk1
210 | 兔子不吃窩邊草,tou3 zi2 bat1 hek3 wo1 bin1 cou2
211 | 入境問俗,入鄉隨俗,jap6 ging2 man6 zuk6 jap6 hoeng1 ceoi4 zuk6
212 | 入屋叫人,入廟拜神,jap6 uk1 giu3 jan4 jap6 miu2 baai3 san4
213 | 入得廚房,出得廳堂,jap6 dak1 ceoi4 fong2 ceot1 dak1 teng1 tong4
214 | 入得廚房,出得廳堂,jap6 dak1 cyu4 fong2 ceot1 dak1 teng1 tong4
215 | 內行看門道,外行看熱鬧,noi6 hong4 hon3 mun4 dou6 ngoi6 hong4 hon3 jit6 naau6
216 | 兩公婆見鬼,唔係你就係我,loeng5 gung1 po2 gin3 gwai2 m4 hai6 nei5 zau6 hai6 ngo5
217 | 兩國相爭,不斬來使,loeng5 gwok3 soeng1 zang1 bat1 zaam2 loi4 si3
218 | 兩害取其輕,loeng5 hoi6 ceoi2 kei4 heng1
219 | 兩害取其輕,loeng5 hoi6 ceoi2 kei4 hing1
220 | 兩害相權取其輕,loeng5 hoi6 soeng1 kyun4 ceoi2 kei4 hing1
221 | 兩虎相爭,必有一傷,loeng5 fu2 soeng1 zang1 bit1 jau5 jat1 soeng1
222 | 兩虎相鬥,必有一傷,loeng5 fu2 soeng1 dau3 bit1 jau5 jat1 soeng1
223 | 兩頭唔到岸,loeng5 tau4 m4 dou3 ngon6
224 | 八九不離十,baat3 gau2 bat1 lei4 sap6
225 | 八字生得正,baat3 zi6 saang1 dak1 zeng3
226 | 八字還沒一撇,baat3 zi6 waan4 mut6 jat1 pit3
227 | 八字都冇一撇,baat3 zi6 dou1 mou5 jat1 pit3
228 | 兵來將擋,水來土掩,bing1 loi4 zoeng3 dong2 seoi2 loi4 tou2 jim2
229 | 兵家必爭之地,bing1 gaa1 bit1 zang1 zi1 dei6
230 | 冇咁大個頭唔好戴咁大頂帽,mou5 gam3 daai6 go3 tau4 m4 hou2 daai3 gam3 daai6 deng2 mou2
231 | 冇咁大個頭就唔好戴咁大頂帽,mou5 gam3 daai6 go3 tau4 zau6 m4 hou2 daai3 gam3 daai6 deng2 mou2
232 | 冇眼屎乾淨盲,mou5 ngaan5 si2 gon1 zeng6 maang4
233 | 冇膽匪類,mou5 daam2 fei2 leoi2
234 | 冇花假,mou5 faa1 gaa2
235 | 冇花冇假,mou5 faa1 mou5 gaa2
236 | 冇規冇矩,mou5 kwai1 mou5 geoi2
237 | 冤冤相報何時了,jyun1 jyun1 soeng1 bou3 ho4 si4 liu5
238 | 冤家宜解不宜結,jyun1 gaa1 ji4 gaai2 bat1 ji4 git3
239 | 冤有頭,債有主,jyun1 jau5 tau4 zaai3 jau5 zyu2
240 | 冰凍三尺,非一日之寒,bing1 dung3 saam1 cek3 fei1 jat1 jat6 zi1 hon4
241 | 冰封三尺,非一日之寒,bing1 fung1 saam1 cek3 fei1 jat1 jat6 zi1 hon4
242 | 冷手執個熱煎堆,laang5 sau2 zap1 go3 jit6 zin1 deoi1
243 | 凡事留一線,他日好相見,faan4 si6 lau4 jat1 sin3 taa1 jat6 hou2 soeng1 gin3
244 | 凡事留一線,日後好相見,faan4 si6 lau4 jat1 sin3 jat6 hau6 hou2 soeng1 gin3
245 | 出乎意料,ceot1 fu4 ji3 liu6
246 | 出乎意料之外,ceot1 fu4 ji3 liu6 zi1 ngoi6
247 | 出其不意,攻其不備,ceot1 kei4 bat1 ji3 gung1 kei4 bat1 bei6
248 | 出污泥而不染,ceot1 wu1 nai4 ji4 bat1 jim5
249 | 出淤泥而不染,ceot1 jyu1 nai4 ji4 bat1 jim5
250 | 初歸新抱,落地孩兒,co1 gwai1 sam1 pou5 lok6 dei6 haai4 ji4
251 | 初生之犢不怕虎,co1 sang1 zi1 duk6 bat1 paa3 fu2
252 | 初生之犢不畏虎,co1 sang1 zi1 duk6 bat1 wai3 fu2
253 | 利口不利腹,lei6 hau2 bat1 lei6 fuk1
254 | 利口唔利腹,lei6 hau2 m4 lei6 fuk1
255 | 到喉唔到肺,dou3 hau4 m4 dou3 fai3
256 | 前不見古人,後不見來者,cin4 bat1 gin3 gu2 jan4 hau6 bat1 gin3 loi4 ze2
257 | 前世撈亂骨頭,cin4 sai3 lou1 lyun6 gwat1 tau4
258 | 前事不忘,後事之師,cin4 si6 bat1 mong4 hau6 si6 zi1 si1
259 | 前人種樹,後人乘涼,cin4 jan4 zung2 syu6 hau6 jan4 sing4 loeng4
260 | 前怕狼後怕虎,cin4 paa3 long4 hau6 paa3 fu2
261 | 前無古人,後無來者,cin4 mou4 gu2 jan4 hau6 mou4 loi4 ze2
262 | 前言不對後語,cin4 jin4 bat1 deoi3 hau6 jyu5
263 | 前車之覆,後車之鑑,cin4 ce1 zi1 fuk6 hau6 ce1 zi1 gaam3
264 | 前車之覆,後車之鑒,cin4 ce1 zi1 fuk1 hau6 ce1 zi1 gaam3
265 | 力不勝任,lik6 bat1 sing1 jam6
266 | 力不從心,lik6 bat1 cung4 sam1
267 | 功不可沒,gung1 bat1 ho2 mut6
268 | 功大於過,gung1 daai6 jyu1 gwo3
269 | 功完行滿,gung1 jyun4 hang5 mun5
270 | 功德圓滿,gung1 dak1 jyun4 mun5
271 | 功德無量,gung1 dak1 mou4 loeng4
272 | 功成不居,gung1 sing4 bat1 geoi1
273 | 功成名就,gung1 sing4 ming4 zau6
274 | 功成名遂,gung1 sing4 ming4 seoi6
275 | 功成身退,gung1 sing4 san1 teoi3
276 | 功敗垂成,gung1 baai6 seoi4 sing4
277 | 功虧一簣,gung1 kwai1 jat1 gwai6
278 | 功過相抵,gung1 gwo3 soeng1 dai2
279 | 功高不賞,gung1 gou1 bat1 soeng2
280 | 功高望重,gung1 gou1 mong6 zung6
281 | 功高蓋主,gung1 gou1 koi3 zyu2
282 | 加油添醋,gaa1 jau4 tim1 cou3
283 | 加鹽加醋,gaa1 jim4 gaa1 cou3
284 | 劣幣驅逐良幣,lyut3 bai6 keoi1 zuk6 loeng4 bai6
285 | 劣績斑斑,lyut6 zik1 baan1 baan1
286 | 劣跡斑斑,lyut3 zik1 baan1 baan1
287 | 助人爲樂,zo6 jan4 wai4 lok6
288 | 努力不懈,nou5 lik6 bat1 haai6
289 | 努力以赴,nou5 lik6 ji5 fu6
290 | 劫富濟貧,gip3 fu3 zai2 pan4
291 | 勇者不懼,jung5 ze2 bat1 geoi6
292 | 勉力而爲,min5 lik6 ji4 wai4
293 | 勉爲其難,min5 wai4 kei4 naan4
294 | 勒住褲頭,laak6 zyu6 fu3 tau4
295 | 勒緊褲帶,lak6 gan2 fu3 daai2
296 | 勒緊褲頭,laak6 gan2 fu3 tau4
297 | 動人心弦,dung6 jan4 sam1 jin4
298 | 動人心魄,dung6 jan4 sam1 paak3
299 | 動刀動槍,dung6 dou1 dung6 coeng1
300 | 動輒得咎,dung6 zip3 dak1 gau3
301 | 動魄驚心,dung6 paak3 ging1 sam1
302 | 勝券在握,sing3 gyun3 zoi6 aak1
303 | 勞民傷財,lou4 man4 soeng1 coi4
304 | 勞而無功,lou4 ji4 mou4 gung1
305 | 勞苦功高,lou4 fu2 gung1 gou1
306 | 勞苦大衆,lou4 fu2 daai6 zung3
307 | 勢不兩立,sai3 bat1 loeng5 laap6
308 | 勢不可擋,sai3 bat1 ho2 dong2
309 | 勢在必得,sai3 zoi6 bit1 dak1
310 | 勢在必行,sai3 zoi6 bit1 hang4
311 | 勢均力敵,sai3 gwan1 lik6 dik6
312 | 勢如破竹,sai3 jyu4 po3 zuk1
313 | 勢孤力弱,sai3 gu1 lik6 joek6
314 | 勢想不到,sai3 soeng2 bat1 dou2
315 | 勢成水火,sai3 sing4 seoi2 fo2
316 | 勢成騎虎,sai3 sing4 ke4 fu2
317 | 勢所必然,sai3 so2 bit1 jin4
318 | 勢所難免,sai3 so2 naan4 min5
319 | 勢高益危,sai3 gou1 jik1 ngai4
320 | 勤以補拙,kan4 ji5 bou2 zyut3
321 | 勤儉持家,kan4 gim6 ci4 gaa1
322 | 勤勞致富,kan4 lou4 zi3 fu3
323 | 勤能補拙,kan4 nang4 bou2 zyut3
324 | 勵精圖治,lai6 zing1 tou4 zi6
325 | 勸善懲惡,hyun3 sin6 cing4 ok3
326 | 勾三搭四,ngau1 saam1 daap3 sei3
327 | 勾心鬥角,ngau1 sam1 dau3 gok3
328 | 勾朋結黨,ngau1 pang4 git3 dong2
329 | 勿庸置疑,mat6 jung4 zi3 ji4
330 | 勿忘國恥,mat6 mong4 gwok3 ci2
331 | 化爲泡影,faa3 wai4 paau3 jing2
332 | 化爲烏有,faa3 wai4 wu1 jau5
333 | 化繁爲簡,faa3 faan4 wai4 gaan2
334 | 化險爲夷,faa3 him2 wai4 ji4
335 | 化鴟爲鳳,faa3 ci1 wai4 fung6
336 | 千揀萬揀,揀着個爛燈盞,cin1 gaan2 maan6 gaan2 gaan2 zoek6 go3 laan6 dang1 zaan2
337 | 千揀萬揀,揀着個爛燈膽,cin1 gaan2 maan6 gaan2 gaan2 zoek6 go3 laan6 dang1 daam2
338 | 千瘡百孔,cin1 cong1 baak3 hung2
339 | 千真萬確,cin1 zan1 maan6 kok3
340 | 千秋萬世,cin1 cau1 maan6 sai3
341 | 千篇一律,cin1 pin1 jat1 leot6
342 | 千紅萬紫,cin1 hung4 maan6 zi2
343 | 千絲萬縷,cin1 si1 maan6 lau5
344 | 千經萬卷,cin1 ging1 maan6 gyun2
345 | 千言萬語,cin1 jin4 maan6 jyu5
346 | 千變萬化,cin1 bin3 maan6 faa3
347 | 千變萬軫,cin1 bin3 maan6 zan2
348 | 千軍萬馬,cin1 gwan1 maan6 maa5
349 | 千載一時,cin1 zoi2 jat1 si4
350 | 千載難逢,cin1 zoi2 naan4 fung4
351 | 千辛萬苦,cin1 san1 maan6 fu2
352 | 千里之行,始於足下,cin1 lei5 zi1 hang4 ci2 jyu1 zuk1 haa6
353 | 千里送鵝毛,物輕人意重,cin1 lei5 sung3 ngo4 mou4 mat6 hing1 jan4 ji3 zung6
354 | 千里送鵝毛,物輕情意重,cin1 lei5 sung3 ngo4 mou4 mat6 hing1 cing4 ji3 zung6
355 | 千里送鵝毛,物輕情義重,cin1 lei5 sung3 ngo4 mou4 mat6 hing1 cing4 ji6 zung6
356 | 千里送鵝毛,禮輕人意重,cin1 lei5 sung3 ngo4 mou4 lai5 hing1 jan4 ji3 zung6
357 | 千里送鵝毛,禮輕情意重,cin1 lei5 sung3 ngo4 mou4 lai5 hing1 cing4 ji3 zung6
358 | 千里送鵝毛,禮輕情義重,cin1 lei5 sung3 ngo4 mou4 lai5 hing1 cing4 ji6 zung6
359 | 千金一擲,cin1 gam1 jat1 zaak6
360 | 千金一諾,cin1 gam1 jat1 nok6
361 | 千鈞一髮,cin1 gwan1 jat1 faat3
362 | 千錘百鍊,cin1 seoi4 baak3 lin6
363 | 卑躬屈節,bei1 gung1 wat1 zit3
364 | 卑躬屈膝,bei1 gung1 wat1 sat1
365 | 卑辭厚禮,bei1 ci4 hau5 lai5
366 | 卑鄙小人,bei1 pei2 siu2 jan4
367 | 卑鄙無恥,bei1 pei2 mou4 ci2
368 | 卑鄙齷齪,bei1 pei2 ak1 cuk1
369 | 卑陋齷齪,bei1 lau6 ak1 cuk1
370 | 卓爾不羣,coek3 ji5 bat1 kwan4
371 | 卓爾不群,coek3 ji5 bat1 kwan4
372 | 南腔北調,naam4 hong1 bak1 diu6
373 | 南轅北轍,naam4 jyun4 bak1 cit3
374 | 博一博,單車變摩托,bok3 jat1 bok3 daan1 ce1 bin3 mo1 tok3
375 | 博古通今,bok3 gu2 tung1 gam1
376 | 博大精深,bok3 daai6 zing1 sam1
377 | 博學多聞,bok3 hok6 do1 man4
378 | 博學多能,bok3 hok6 do1 nang4
379 | 博文約禮,bok3 man4 joek3 lai5
380 | 博紅顏一笑,bok3 hung4 ngaan4 jat1 siu3
381 | 博聞多識,bok3 man4 do1 sik1
382 | 去咗賣鹹鴨蛋,heoi3 zo2 maai6 haam4 aap3 daan6
383 | 及時處理,事半功倍,kap6 si4 cyu2 lei5 si6 bun3 gung1 pui5
384 | 反其道而行之,faan2 kei4 dou6 ji4 hang4 zi1
385 | 反轉豬肚就係屎,faan2 zyun3 zyu1 tou5 zau6 hai6 si2
386 | 反轉豬肚就是屎,faan2 zyun3 zyu1 tou5 zau6 si6 si2
387 | 取之不盡,用之不竭,ceoi2 zi1 bat1 zeon6 jung6 zi1 bat1 kit3
388 | 取其精華,去其糟粕,ceoi2 kei4 zing1 waa4 heoi3 kei4 zou1 pok3
389 | 受人錢財,替人消災,sau6 jan4 cin4 coi4 tai3 jan4 siu1 zoi1
390 | 受硬唔受軟,sau6 ngaang6 m4 sau6 jyun5
391 | 受軟唔受硬,sau6 jyun5 m4 sau6 ngaang6
392 | 口惠而實不至,hau2 wai6 ji4 sat6 bat1 zi3
393 | 口服心不服,hau2 fuk6 sam1 bat1 fuk6
394 | 口水多過茶,hau2 seoi2 do1 gwo3 caa4
395 | 只可意會,不可言傳,zi2 ho2 ji3 wui6 bat1 ho2 jin4 cyun4
396 | 只知其一,不知其二,zi2 zi1 kei4 jat1 bat1 zi1 kei4 ji6
397 | 只羨鴛鴦不羨仙,zi2 sin6 jin1 joeng1 bat1 sin6 sin1
398 | 只要功夫深,鐵杵磨成鍼,zi2 jiu3 gung1 fu1 sam1 tit3 cyu5 mo4 sing4 zam1
399 | 只見樹木不見森林,zi2 gin3 syu6 muk6 bat1 gin3 sam1 lam4
400 | 只許州官放火,不准百姓點燈,zi2 heoi2 zau1 gun1 fong3 fo2 bat1 zeon2 baak3 sing3 dim2 dang1
401 | 只許州官放火,不許百姓點燈,zi2 heoi2 zau1 gun1 fong3 fo2 bat1 heoi2 baak3 sing3 dim2 dang1
402 | 可一不可再,ho2 jat1 bat1 ho2 zoi3
403 | 可一而不可再,ho2 jat1 ji4 bat1 ho2 zoi3
404 | 可憐天下父母心,ho2 lin4 tin1 haa6 fu6 mou5 sam1
405 | 可望而不可及,ho2 mong6 ji4 bat1 ho2 kap6
406 | 可遇不可求,ho2 jyu6 bat1 ho2 kau4
407 | 可遇而不可求,ho2 jyu6 ji4 bat1 ho2 kau4
408 | 司馬昭之心,路人皆知,si1 maa5 ciu1 zi1 sam1 lou6 jan4 gaai1 zi1
409 | 各人自掃門前雪,休管他家瓦上霜,gok3 jan4 zi6 sou3 mun4 cin4 syut3 jau1 gun2 taa1 gaa1 ngaa5 soeng6 soeng1
410 | 各人自掃門前雪,莫管他家瓦上霜,gok3 jan4 zi6 sou3 mun4 cin4 syut3 mok6 gun2 taa1 gaa1 ngaa5 soeng6 soeng1
411 | 各家自掃門前雪,休管他家瓦上霜,gok3 gaa1 zi6 sou3 mun4 cin4 syut3 jau1 gun2 taa1 gaa1 ngaa5 soeng6 soeng1
412 | 各家自掃門前雪,莫管他家瓦上霜,gok3 gaa1 zi6 sou3 mun4 cin4 syut3 mok6 gun2 taa1 gaa1 ngaa5 soeng6 soeng1
413 | 各懷鬼胎,gok3 waai4 gwai2 toi1
414 | 各打五十大板,gok3 daa2 ng5 sap6 daai6 baan2
415 | 各花入各眼,gok3 faa1 jap6 gok3 ngaan5
416 | 各處鄉村各處例,gok3 cyu5 hoeng1 cyun1 gok3 cyu5 lai6
417 | 合則來,不合則去,hap6 zak1 loi4 bat1 hap6 zak1 heoi3
418 | 吉人自有天相,gat1 jan4 zi6 jau5 tin1 soeng3
419 | 吊頸都要唞下氣,diu3 geng2 dou1 jiu3 tau2 haa5 hei3
420 | 吊頸都要唞氣,diu3 geng2 dou1 jiu3 tau2 hei3
421 | 同一個世界,同一個夢想,tung4 jat1 go3 sai3 gaai3 tung4 jat1 go3 mung6 soeng2
422 | 同一個鼻哥窿出氣,tung4 jat1 go3 bei6 go1 lung1 ceot1 hei3
423 | 同人唔同命,同遮唔同柄,tung4 jan4 m4 tung4 meng6 tung4 ze1 m4 tung4 beng3
424 | 同是天涯淪落人,tung4 si6 tin1 ngaai4 leon4 lok6 jan4
425 | 同生死,共患難,tung4 sang1 sei2 gung6 waan6 naan6
426 | 同花兼夾順,tung4 faa1 gim1 gaap3 seon2
427 | 同行如敵國,tung4 hong4 jyu4 dik6 gwok3
428 | 同行是冤家,tung4 hong4 si6 jyun1 gaa1
429 | 名不正言不順,ming4 bat1 zing3 jin4 bat1 seon6
430 | 名不見經傳,ming4 bat1 gin3 ging1 cyun4
431 | 名師出高徒,ming4 si1 ceot1 gou1 tou4
432 | 君子一言,駟馬難追,gwan1 zi2 jat1 jin4 si3 maa5 naan4 zeoi1
433 | 君子不計小人過,gwan1 zi2 bat1 gai3 siu2 jan4 gwo3
434 | 君子之交淡如水,gwan1 zi2 zi1 gaau1 daam6 jyu4 seoi2
435 | 君子動口不動手,gwan1 zi2 dung6 hau2 bat1 dung6 sau2
436 | 君子坦蕩蕩,小人長戚戚,gwan1 zi2 taan2 dong6 dong6 siu2 jan4 coeng4 cik1 cik1
437 | 君子報仇,十年不晚,gwan1 zi2 bou3 sau4 sap6 nin4 bat1 maan5
438 | 君子報仇,十年未晚,gwan1 zi2 bou3 sau4 sap6 nin4 mei6 maan5
439 | 吹得我漲,拉得我長,ceoi1 dak1 ngo5 zoeng3 laai1 dak1 ngo5 coeng4
440 | 吾生也有涯,而知也無涯,ng4 sang1 jaa5 jau5 ngaai4 ji4 zi1 jaa5 mou4 ngaai4
441 | 呻飢莫呻飽,san3 gei1 mok6 san3 baau2
442 | 呼之則來,揮之則去,fu1 zi1 zak1 loi4 fai1 zi1 zak1 heoi3
443 | 呼之即來,揮之即去,fu1 zi1 zik1 loi4 fai1 zi1 zik1 heoi3
444 | 唔做中,唔做保,唔做媒人三代好,m4 zou6 zung1 m4 zou6 bou2 m4 zou6 mui4 jan4 saam1 doi6 hou2
445 | 唔出聲冇人當你係啞,m4 ceot1 seng1 mou5 jan4 dong3 nei5 hai6 aa2
446 | 唔出聲冇人當你啞,m4 ceot1 seng1 mou5 jan4 dong3 nei5 aa2
447 | 唔出聲冇人話你係啞,m4 ceot1 seng1 mou5 jan4 waa6 nei5 hai6 aa2
448 | 唔出聲冇人話你啞,m4 ceot1 seng1 mou5 jan4 waa6 nei5 aa2
449 | 坐井觀天,zo6 zeng2 gun1 tin1
450 | 坐享其成,zo6 hoeng2 kei4 sing4
451 | 坐以待斃,zo6 ji5 doi6 bai6
452 | 坐這山望那山,一事無成,zo6 ze2 saan1 mong6 naa5 saan1 jat1 si6 mou4 sing4
453 | 姜太公釣魚,願者上釣,goeng1 taai3 gung1 diu3 jyu4 jyun6 ze2 soeng5 diu3
454 | 姜太公釣魚,願者上鉤,goeng1 taai3 gung1 diu3 jyu4 jyun6 ze2 soeng5 ngau1
455 | 字如其人,zi6 jyu4 kei4 jan4
456 | 富貴榮華,fu3 gwai3 wing4 waa4
457 | 幼吾幼,以及人之幼,jau3 ng4 jau3 ji5 kap6 jan4 zi1 jau3
458 | 戰無不勝,攻無不克,zin3 mou4 bat1 sing3 gung1 mou4 bat1 hak1
459 | 戰無不勝,攻無不取,zin3 mou4 bat1 sing3 gung1 mou4 bat1 ceoi2
460 | 打完齋唔要和尚,daa2 jyun4 zaai1 m4 jiu3 wo4 soeng2
461 | 打死不離親兄弟,daa2 sei2 bat1 lei4 can1 hing1 dai6
462 | 打爛沙盆問到㞘,daa2 laan6 saa1 pun4 man6 dou3 duk1
463 | 打爛沙盆問到䐁,daa2 laan6 saa1 pun4 man6 dou3 duk1
464 | 打爛沙盆璺到㞘,daa2 laan6 saa1 pun4 man6 dou3 duk1
465 | 打爛沙盆璺到䐁,daa2 laan6 saa1 pun4 man6 dou3 duk1
466 | 打爛沙盤問到㞘,daa2 laan6 saa1 pun4 man6 dou3 duk1
467 | 打爛砂盆問到㞘,daa2 laan6 saa1 pun4 man6 dou3 duk1
468 | 打腫面充肥仔,daa2 zung2 min6 cung1 fei4 zai2
469 | 打自己工,自己話事,daa2 zi6 gei2 gung1 zi6 gei2 waa6 si6
470 | 打蛇不死,後患無窮,daa2 se4 bat1 sei2 hau6 waan6 mou4 kung4
471 | 打蛇隨棍上,daa2 se4 ceoi4 gwan3 soeng5
472 | 打通任督二脈,daa2 tung1 jam6 duk1 ji6 mak6
473 | 打醒十二分精神,daa2 seng2 sap6 ji6 fan1 zing1 san4
474 | 打風唔成三日雨,daa2 fung1 m4 seng4 saam1 jat6 jyu5
475 | 扮豬喫老虎,baan6 zyu1 hek3 lou5 fu2
476 | 扮豬食老虎,baan6 zyu1 sik6 lou5 fu2
477 | 批個頭畀你當凳坐,pai1 go3 tau2 bei2 nei5 dong3 dang3 co5
478 | 批個頭畀你當櫈坐,pai1 go3 tau2 bei2 nei5 dong3 dang3 co5
479 | 批個頭落嚟畀你當凳坐,pai1 go3 tau2 lok6 lai4 bei2 nei5 dong3 dang3 co5
480 | 批個頭落嚟畀你當櫈坐,pai1 go3 tau2 lok6 lai4 bei2 nei5 dong3 dang3 co5
481 | 承你貴言,sing4 nei5 gwai3 jin4
482 | 把口啷過油,baa2 hau2 long2 gwo3 jau4
483 | 拋頭顱,灑熱血,paau1 tau4 lou4 saa2 jit6 hyut3
484 | 拎得起,放得低,ling1 dak1 hei2 fong3 dak1 dai1
485 | 指住禿奴罵和尚,zi2 zyu6 tuk1 nou4 maa6 wo4 soeng2
486 | 挾天子以令諸侯,hip6 tin1 zi2 ji5 ling6 zyu1 hau4
487 | 捉到鹿唔識脫角,zuk1 dou2 luk2 m4 sik1 tyut3 gok3
488 | 捉蛇入屎忽,zuk1 se4 jap6 si2 fat1
489 | 捉蛇入屎窟,zuk1 se4 jap6 si2 fat1
490 | 捉蟲入屎忽,zuk1 cung4 jap6 si2 fat1
491 | 捉蟲入屎窟,zuk1 cung4 jap6 si2 fat1
492 | 換湯不換藥,wun6 tong1 bat1 wun6 joek6
493 | 換湯唔換藥,wun6 tong1 m4 wun6 joek6
494 | 搏一搏,單車變摩托,bok3 jat1 bok3 daan1 ce1 bin3 mo1 tok3
495 | 早知今日,何必當初,zou2 zi1 gam1 jat6 ho4 bit1 dong1 co1
496 | 早知燈係火,唔使盲摸摸,zou2 zi1 dang1 hai6 fo2 m4 sai2 maang4 mo2 mo2
497 | 早知燈係火,唔使隨街摸,zou2 zi1 dang1 hai6 fo2 m4 sai2 ceoi4 gaai1 mo2
498 | 旺丁唔旺財,wong6 ding1 m4 wong6 coi4
499 | 明人不做暗事,ming4 jan4 bat1 zou6 am3 si6
500 | 明人不說暗話,ming4 jan4 bat1 syut3 am3 waa2
501 | 明於觀人,暗於察己,ming4 jyu1 gun1 jan4 am3 jyu1 caat3 gei2
502 | 明槍好躲,暗箭難防,ming4 coeng1 hou2 do2 am3 zin3 naan4 fong4
503 | 明槍易躲,暗箭難防,ming4 coeng1 ji6 do2 am3 zin3 naan4 fong4
504 | 智者千慮,必有一失,zi3 ze2 cin1 leoi6 bit1 jau5 jat1 sat1
505 | 書中自有黃金屋,書中自有顏如玉,syu1 zung1 zi6 jau5 wong4 gam1 uk1 syu1 zung1 zi6 jau5 ngaan4 jyu4 juk6
506 | 書到用時方恨少,syu1 dou3 jung6 si4 fong1 han6 siu2
507 | 曹操都有知心友,關公亦有對頭人,cou4 cou1 dou1 jau5 zi1 sam1 jau5 gwaan1 gung1 jik6 jau5 deoi3 tau4 jan4
508 | 曹操都有知心友,關公都有對頭人,cou4 cou1 dou1 jau5 zi1 sam1 jau5 gwaan1 gung1 dou1 jau5 deoi3 tau4 jan4
509 | 曾經滄海難爲水,除卻巫山不是雲,cang4 ging1 cong1 hoi2 naan4 wai4 seoi2 ceoi4 koek3 mou4 saan1 bat1 si6 wan4
510 | 有事鍾無艷,無事夏迎春,jau5 si6 zung1 mou4 jim6 mou4 si6 haa6 jing4 ceon1
511 | 有事鍾無豔,無事夏迎春,jau5 si6 zung1 mou4 jim6 mou4 si6 haa6 jing4 ceon1
512 | 有嘢就講,有屁就放,jau5 je5 zau6 gong2 jau5 pei3 zau6 fong3
513 | 有奶便是娘,jau5 naai5 bin6 si6 noeng4
514 | 有姿勢,冇實際,jau5 zi1 sai3 mou5 sat6 zai3
515 | 有心唔怕遲,jau5 sam1 m4 paa3 ci4
516 | 有志者事竟成,jau5 zi3 ze2 si6 ging2 sing4
517 | 有情人終成眷屬,jau5 cing4 jan4 zung1 sing4 gyun3 suk6
518 | 有意栽花花不發,無心插柳柳成蔭,jau5 ji3 zoi1 faa1 faa1 bat1 faat3 mou4 sam1 caap3 lau5 lau5 sing4 jam3
519 | 有所得必有所失,jau5 so2 dak1 bit1 jau5 so2 sat1
520 | 有早知,冇乞兒,jau5 zou2 zi1 mou5 hat1 ji1
521 | 有早知,冇乞衣,jau5 zou2 zi1 mou5 hat1 ji1
522 | 有朋自遠方來,不亦樂乎,jau5 pang4 zi6 jyun5 fong1 lai4 bat1 jik6 lok6 fu4
523 | 有殺錯,冇放過,jau5 saat3 co3 mou5 fong3 gwo3
524 | 有爺生,冇乸教,jau5 je5 saang1 mou5 naa2 gaau3
525 | 有異性冇人性,jau5 ji6 sing3 mou5 jan4 sing3
526 | 有異曲同工之妙,jau5 ji6 kuk1 tung4 gung1 zi1 miu6
527 | 有百利而無一害,jau5 baak3 lei6 ji4 mou4 jat1 hoi6
528 | 有百害而無一利,jau5 baak3 hoi6 ji4 mou4 jat1 lei6
529 | 有眼不識泰山,jau5 ngaan5 bat1 sik1 taai3 saan1
530 | 有碗話碗,有碟話碟,jau5 wun2 waa6 wun2 jau5 dip2 waa6 dip2
531 | 有福同享,有禍同當,jau5 fuk1 tung4 hoeng2 jau5 wo6 tung4 dong1
532 | 有福同享,有難同當,jau5 fuk1 tung4 hoeng2 jau5 naan6 tung4 dong1
533 | 有粥食粥,有飯食飯,jau5 zuk1 sik6 zuk1 jau5 faan6 sik6 faan6
534 | 樹大有枯枝,族大有乞兒,syu6 daai6 jau5 fu1 zi1 zuk6 daai6 jau5 hat1 ji1
535 | 樹欲靜而風不息,子欲養而親不在,syu6 juk6 zing6 ji4 fung1 bat1 sik1 zi2 juk6 joeng5 ji4 can1 bat1 zoi6
536 | 樹欲靜而風不止,syu6 juk6 zing6 ji4 fung1 bat1 zi2
537 | 欲加之罪,何患無辭,juk6 gaa1 zi1 zeoi6 ho4 waan6 mou4 ci4
538 | 欲善其事,必先利其器,juk6 sin6 kei4 si6 bit1 sin1 lei6 kei4 hei3
539 | 欲速則不達,juk6 cuk1 zak1 bat1 daat6
540 | 欺山莫欺水,hei1 saan1 mok6 hei1 seoi2
541 | 此地無銀三百兩,ci2 dei6 mou4 ngan4 saam1 baak3 loeng2
542 | 死雞撐硬腳,sei2 gai1 caang3 ngaang6 goek3
543 | 死雞撐飯蓋,sei2 gai1 caang3 faan5 goi3
544 | 死馬當活馬醫,sei2 maa5 dong3 wut6 maa5 ji1
545 | 江山易改,本性難移,gong1 saan1 ji6 goi2 bun2 sing3 naan4 ji4
546 | 淡定有錢剩,daam6 ding6 jau5 cin2 zing6
547 | 淡淡定,有錢剩,daam6 daam6 ding6 jau5 cin2 zing6
548 | 清官難審家庭事,cing1 gun1 naan4 sam2 gaa1 ting4 si6
549 | 清官難斷家務事,cing1 gun1 naan4 dyun3 gaa1 mou6 si6
550 | 渾身解數,wan6 san1 gaai2 sou3
551 | 溫故而知新,wan1 gu3 ji4 zi1 san1
552 | 溫良恭儉讓,wan1 loeng4 gung1 gim6 joeng6
553 | 滿招損,謙受益,mun5 ziu1 syun2 him1 sau6 jik1
554 | 激死老母搵山拜,gik1 sei2 lou5 mou2 wan2 saan1 baai3
555 | 激死老豆搵山拜,gik1 sei2 lou5 dau6 wan2 saan1 baai3
556 | 烈火見真金,lit6 fo2 gin3 zan1 gam1
557 | 烽菸四起,戰火紛飛,fung1 jin1 sei3 hei2 zin3 fo2 fan1 fei1
558 | 無一事而不學,無一時而不學,無一處而不得,mou4 jat1 si6 ji4 bat1 hok6 mou4 jat1 si4 ji4 bat1 hok6 mou4 jat1 cyu3 ji4 bat1 dak1
559 | 無三不成幾,mou4 saam1 bat1 sing4 gei2
560 | 無事不登三寶殿,mou4 si6 bat1 dang1 saam1 bou2 din6
561 | 無事獻殷勤,非奸即盜,mou4 si6 hin3 jan1 kan4 fei1 gaan1 zik1 dou6
562 | 無功不受祿,mou4 gung1 bat1 sau6 luk6
563 | 無心插柳柳成蔭,mou4 sam1 caap3 lau5 lau5 sing4 jam3
564 | 無所不用其極,mou4 so2 bat1 jung6 kei4 gik6
565 | 無所施其技,mou4 so2 si1 kei4 gei6
566 | 無毒不丈夫,mou4 duk6 bat1 zoeng6 fu1
567 | 無氈無扇,神仙難變,mou4 zin1 mou4 sin3 san4 sin1 naan4 bin3
568 | 無私顯見私,mou4 si1 hin2 gin3 si1
569 | 無聲狗咬死人,mou4 seng1 gau2 ngaau5 sei2 jan4
570 | 無限風光在險峯,mou4 haan6 fung1 gwong1 zoi6 him2 fung1
571 | 無顏見江東父老,mou4 ngaan4 gin3 gong1 dung1 fu6 lou5
572 | 無風不起浪,mou4 fung1 bat1 hei2 long6
573 | 爛泥扶不上牆,laan6 nai4 fu4 bat1 soeng5 coeng4
574 | 爛泥扶唔上壁,laan6 nai4 fu4 m4 soeng5 bek3
575 | 爛船仲有三斤釘,laan6 syun4 zung6 jau5 saam1 gan1 deng1
576 | 爛船都仲有三斤釘,laan6 syun4 dou1 zung6 jau5 saam1 gan1 deng1
577 | 爛船都有三分釘,laan6 syun4 dou1 jau5 saam1 fan1 deng1
578 | 爛船都有三斤釘,laan6 syun4 dou1 jau5 saam1 gan1 deng1
579 | 爲富不仁,爲仁不富,wai4 fu3 bat1 jan4 wai4 jan4 bat1 fu3
580 | 爾虞我詐,ji5 jyu4 ngo5 zaa3
581 | 牀下底破柴:撞板,cong4 haa6 dai2 po3 caai4 zong6 baan2
582 | 牀前明月光,cong4 cin4 ming4 jyut6 gwong1
583 | 牀頭打交牀尾和,cong4 tau4 daa2 gaau1 cong4 mei5 wo4
584 | 牙痛慘過大病,ngaa4 tung3 caam2 gwo3 daai6 beng6
585 | 牙齒當金使,ngaa4 ci2 dong3 gam1 sai2
586 | 牛唔飲水,唔㩒得牛頭低,ngau4 m4 jam2 seoi2 m4 gam6 dak1 ngau4 tau4 dai1
587 | 牛唔飲水,唔撳得牛頭低,ngau4 m4 jam2 seoi2 m4 gam6 dak1 ngau4 tau4 dai1
588 | 牛唔飲水,點撳得牛頭低,ngau4 m4 jam2 seoi2 dim2 gam6 dak1 ngau4 tau4 dai1
589 | 牛嚼牡丹:唔知花定草,ngau4 ziu6 maau5 daan1 m4 zi1 faa1 ding6 cou2
590 | 牛皮燈籠:點極唔明,ngau4 pei4 dang1 lung4 dim2 gik6 m4 meng4
591 | 牛頭不對馬嘴,ngau4 tau4 bat1 deoi3 maa5 zeoi2
592 | 牛頭唔搭馬嘴,ngau4 tau4 m4 daap3 maa5 zeoi2
593 | 物以稀爲貴,mat6 ji5 hei1 wai4 gwai3
594 | 物以罕爲貴,mat6 ji5 hon2 wai4 gwai3
595 | 物以類聚,人以羣分,mat6 ji5 leoi6 zeoi6 jan4 ji5 kwan4 fan1
596 | 物似主人形,mat6 ci5 zyu2 jan4 jing4
597 | 物離鄉貴,人離鄉賤,mat6 lei4 hoeng1 gwai3 jan4 lei4 hoeng1 zin6
598 | 狗口長不出象牙,gau2 hau2 zoeng2 bat1 ceot1 zoeng6 ngaa4
599 | 狗咬呂洞賓,不識好人心,gau2 ngaau5 leoi5 dung6 ban1 bat1 sik1 hou2 jan4 sam1
600 | 狗嘴吐不出象牙,gau2 zeoi2 tou3 bat1 ceot1 zoeng6 ngaa4
601 | 狗嘴裏吐不出象牙,gau2 zeoi2 leoi5 tou3 bat1 ceot1 zoeng6 ngaa4
602 | 狗改不了喫屎,gau2 goi2 bat1 liu5 hek3 si2
603 | 狗眼看人低,gau2 ngaan5 hon3 jan4 dai1
604 | 狡兔死,走狗烹,gaau2 tou3 sei2 zau2 gau2 paang1
605 | 狹路相逢勇者勝,haap3 lou6 soeng1 fung4 jung5 ze2 sing3
606 | 獻醜不如藏拙,hin3 cau2 bat1 jyu4 cong4 zyut3
607 | 玉不琢,不成器,juk6 bat1 doek3 bat1 sing4 hei3
608 | 王婆賣瓜,自賣自誇,wong4 po4 maai6 gwaa1 zi6 maai6 zi6 kwaa1
609 | 琳瑯滿目,lam4 long4 mun5 muk6
610 | 瑟瑟發抖,sat1 sat1 faat3 dau2
611 | 璀璨奪目,ceoi1 caan3 dyut6 muk6
612 | 瓜無滾圓,人無十全,gwaa1 mou4 gwan2 jyun4 jan4 mou4 sap6 cyun4
613 | 瓜田不納履,李下不整冠,gwaa1 tin4 bat1 naap6 lei5 lei5 haa6 bat1 zing2 gun1
614 | 瓜田李下之嫌,gwaa1 tin4 lei5 haa6 zi1 jim4
615 | 甕中捉鱉,ung3 zung1 zuk3 bit3
616 | 甘言蜜語,gam1 jin4 mat6 jyu5
617 | 甜情密意,tim4 cing4 mat6 ji3
618 | 生不如死,sang1 bat1 jyu4 sei2
619 | 生不逢時,sang1 bat1 fung4 si4
620 | 生人勿近,saang1 jan4 mat6 gan6
621 | 生人唔生膽,saang1 jan4 m4 saang1 daam2
622 | 生人霸死地,saang1 jan4 baa3 sei2 dei6
623 | 生兒育女,saang1 ji4 juk6 neoi5
624 | 生命不息,戰鬥不止,sang1 ming6 bat1 sik1 zin3 dau3 bat1 zi2
625 | 生命有價,sang1 meng6 jau5 gaa3
626 | 生嚿叉燒好過生你,saang1 gau6 caa1 siu1 hou2 gwo3 saang1 nei5
627 | 生意盎然,saang1 ji3 ong3 jin4
628 | 生意興隆,saang1 ji3 hing1 lung4
629 | 生於憂患,死於安樂,sang1 jyu1 jau1 waan6 sei2 jyu1 on1 lok6
630 | 生於斯,長於斯,sang1 jyu1 si1 zoeng2 jyu1 si1
631 | 生榮死哀,sang1 wing4 sei2 oi1
632 | 生機勃勃,sang1 gei1 but6 but6
633 | 生機盎然,sang1 gei1 ong3 jin4
634 | 生死之交,sang1 sei2 zi1 gaau1
635 | 生死有命,sang1 sei2 jau5 ming6
636 | 生死未卜,sang1 sei2 mei6 buk1
637 | 生死與共,sang1 sei2 jyu5 gung6
638 | 生氣勃勃,sang1 hei3 but6 but6
639 | 生氣蓬勃,sang1 hei3 pung4 but6
640 | 生炒熱賣,saang1 caau2 jit6 maai6
641 | 生無可戀,sang1 mou4 ho2 lyun2
642 | 生米煮成熟飯,saang1 mai5 zyu2 sing4 suk6 faan6
643 | 田雞過河,各有各𨅝,tin4 gai1 gwo3 ho4 gok3 jau5 gok3 jaang3
644 | 由儉入奢易,由奢入儉難,jau4 gim6 jap6 ce1 ji6 jau4 ce1 jap6 gim6 naan4
645 | 男人不壞,女人不愛,naam4 jan4 bat1 waai6 neoi5 jan4 bat1 oi3
646 | 男人膝下有黃金,naam4 jan4 sat1 haa6 jau5 wong4 gam1
647 | 男兒有淚不輕彈,naam4 ji4 jau5 leoi6 bat1 hing1 taan4
648 | 男女授受不親,naam4 neoi5 sau6 sau6 bat1 can1
649 | 男子漢大丈夫,naam4 zi2 hon3 daai6 zoeng6 fu1
650 | 男怕入錯行,女怕嫁錯郎,naam4 paa3 jap6 co3 hong4 neoi5 paa3 gaa3 co3 long4
651 | 發號施令,faat3 hou6 si1 ling6
652 | 知人口面不知心,zi1 jan4 hau2 min6 bat1 zi1 sam1
653 | 知人知面不知心,zi1 jan4 zi1 min6 bat1 zi1 sam1
654 | 知人者智,自知者明,zi1 jan4 ze2 zi3 zi6 zi1 ze2 ming4
655 | 知其一,不知其二,zi1 kei4 jat1 bat1 zi1 kei4 ji6
656 | 知其不可爲而爲之,zi1 kei4 bat1 ho2 wai4 ji4 wai4 zi1
657 | 知其然,不知其所以然,zi1 kei4 jin4 bat1 zi1 kei4 so2 ji5 jin4
658 | 知子莫若父,zi1 zi2 mok6 joek6 fu6
659 | 知己知彼,百戰不殆,zi1 gei2 zi1 bei2 baak3 zin3 bat1 toi5
660 | 知彼知己,百戰不殆,zi1 bei2 zi1 gei2 baak3 zin3 bat1 toi5
661 | 知彼知己,百戰百勝,zi1 bei2 zi1 gei2 baak3 zin3 baak3 sing3
662 | 知恥近乎勇,zi1 ci2 gan6 fu4 jung5
663 | 矮仔多計,矮女多仔,ai2 zai2 do1 gai2 ai2 neoi2 do1 zai2
664 | 神不知鬼不覺,san4 bat1 zi1 gwai2 bat1 gok3
665 | 神又係你,鬼又係你,san4 jau6 hai6 nei5 gwai2 jau6 hai6 nei5
666 | 神又係佢,鬼又係佢,san4 jau6 hai6 keoi5 gwai2 jau6 hai6 keoi5
667 | 神檯貓屎,神憎鬼厭,san4 toi4 maau1 si2 san4 zang1 gwai2 jim3
668 | 神龍見首不見尾,san4 lung4 gin3 sau2 bat1 gin3 mei5
669 | 禍不及妻兒,wo6 bat1 kap6 cai1 ji4
670 | 禮多人不怪,lai5 do1 jan4 bat1 gwaai3
671 | 禾稈冚珍珠,wo4 gon2 kam2 zan1 zyu1
672 | 秀才不出門,全知天下事,sau3 coi4 bat1 ceot1 mun4 cyun4 zi1 tin1 haa6 si6
673 | 秀才不出門,能知天下事,sau3 coi2 bat1 ceot1 mun4 nang4 zi1 tin1 haa6 si6
674 | 秀才遇着兵,有理說不清,sau3 coi2 jyu6 zoek6 bing1 jau5 lei5 syut3 bat1 cing1
675 | 種瓜得瓜,種豆得豆,zung3 gwaa1 dak1 gwaa1 zung3 dau2 dak1 dau2
676 | 空穴來風,事必有因,hung1 jyut6 loi4 fung1 si6 bit1 jau5 jan1
677 | 空穴來風,未必無因,hung1 jyut6 loi4 fung1 mei6 bit1 mou4 jan1
678 | 窮在鬧市無人問,富在深山有遠親,kung4 zoi6 naau6 si5 mou4 jan4 man6 fu3 zoi6 sam1 saan1 jau5 jyun5 can1
679 | 竹籃打水,一場空,zuk1 laam4 daa2 seoi2 jat1 coeng4 hung1
680 | 竹門對竹門,木門對木門,zuk1 mun4 deoi3 zuk1 mun4 muk6 mun4 deoi3 muk6 mun4
681 | 管中窺豹,gun2 zung1 kwai1 paau3
682 | 精人出口,笨人出手,zeng1 jan4 ceot1 hau2 ban6 jan4 ceot1 sau2
683 | 精誠所至,金石爲開,zing1 sing4 so2 zi3 gam1 sek6 wai4 hoi1
684 | 糧草先行,loeng4 cou2 sin1 hang4
685 | 細時偷針,大時偷金,sai3 si4 tau1 zam1 daai6 si4 tau1 gam1
686 | 置之死地而後生,zi3 zi1 sei2 dei6 ji4 hau6 sang1
687 | 置諸死地而後生,zi3 zyu1 sei2 dei6 ji4 hau6 sang1
688 | 罷黜百家,獨尊儒術,baa6 ceot1 baak3 gaa1 duk6 zyun1 jyu4 seot6
689 | 老吾老,以及人之老,lou5 ng4 lou5 ji5 kap6 jan4 zi1 lou5
690 | 耳聽爲虛,眼見爲實,ji5 ting3 wai4 heoi1 ngaan5 gin3 wai4 sat6
691 | 聰明一世,懵懂一時,cung1 ming4 jat1 sai3 mung2 dung2 jat1 si4
692 | 聰明一世,糊塗一時,cung1 ming4 jat1 sai3 wu4 tou4 jat1 si4
693 | 聰明一世,蠢鈍一時,cung1 ming4 jat1 sai3 ceon2 deon6 jat1 si4
694 | 聰明反被聰明誤,cung1 ming4 faan2 bei6 cung1 ming4 ng6
695 | 聲大大,冇嘢賣,seng1 daai6 daai6 mou5 je5 maai6
696 | 肥水不流別人田,fei4 seoi2 bat1 lau4 bit6 jan4 tin4
697 | 肥水不流外人田,fei4 seoi2 bat1 lau4 ngoi6 jan4 tin4
698 | 胭脂馬難騎,jin1 zi1 maa5 naan4 ke4
699 | 胳膊肘朝外拐,gaak3 bok3 zau2 ciu4 ngoi6 gwaai2
700 | 能醫不自醫,nang4 ji1 bat1 zi6 ji1
701 | 能醫百病,nang6 ji1 baak3 beng6
702 | 脫褲子放屁,tyut3 fu3 zi2 fong3 pei3
703 | 臨急抱佛腳,lam4 gap1 pou5 fat6 goek3
704 | 臨時抱佛腳,lam4 si4 pou5 fat6 goek3
705 | 臨淵羨魚,不如退而結網,lam4 jyun1 sin6 jyu4 bat1 jyu4 teoi3 ji4 git3 mong5
706 | 臨老入花叢,lam4 lou5 jap6 faa1 cung4
707 | 自己的事自己做,zi6 gei2 dik1 si6 zi6 gei2 zou6
708 | 臭坑出臭草,cau3 haang1 ceot1 cau3 cou2
709 | 臭罌出臭草,cau3 aang1 ceot1 cau3 cou2
710 | 臺上一分鐘,臺下十年功,toi4 soeng6 jat1 fan1 zung1 toi4 haa6 sap6 nin4 gung1
711 | 臺上三分鐘,臺下十年功,toi4 soeng6 saam1 fan1 zung1 toi4 haa6 sap6 nin4 gung1
712 | 舅父打外甥,打死冇人爭,kau5 fu2 daa2 ngoi6 sang1 daa2 sei2 mou5 jan4 zang1
713 | 舉頭三尺有神明,不畏人知畏己知,geoi2 tau4 saam1 cek3 jau5 san4 ming4 bat1 wai3 jan4 zi1 wai3 gei2 zi1
714 | 舊嘅唔去,新嘅唔嚟,gau6 ge3 m4 heoi3 san1 ge3 m4 lai4
715 | 舊的不去,新的不來,gau6 dik1 bat1 heoi3 san1 dik1 bat1 loi4
716 | 舢舨充炮艇,saan1 baan2 cung1 paau3 teng5
717 | 船頭驚鬼,船尾驚賊,syun4 tau4 geng1 gwai2 syun4 mei5 geng1 caak2
718 | 良心當狗肺,loeng4 sam1 dong3 gau2 fai3
719 | 良禽擇木而棲,loeng4 kam4 zaak6 muk6 ji4 cai1
720 | 色字頭上一把刀,sik1 zi6 tau4 soeng6 jat1 baa2 dou1
721 | 花有重開日,人無再少年,faa1 jau5 cung5 hoi1 jat6 jan4 mou4 zoi3 siu3 nin4
722 | 苟富貴,勿相忘,gau2 fu3 gwai3 mat6 soeng1 mong4
723 | 若要人不知,除非己莫爲,joek6 jiu3 jan4 bat1 zi1 ceoi4 fei1 gei2 mok6 wai4
724 | 苦海無邊,回頭是岸,fu2 hoi2 mou4 bin1 wui4 tau4 si6 ngon6
725 | 英雄所見略同,jing1 hung4 so2 gin3 loek6 tung4
726 | 英雄無用武之地,jing1 hung4 mou4 jung6 mou5 zi1 dei6
727 | 英雄難過美人關,jing1 hung4 naan4 gwo3 mei5 jan4 gwaan1
728 | 萬丈高樓平地起,maan6 zoeng6 gou1 lau4 ping4 dei6 hei2
729 | 萬事俱備,只欠東風,maan6 si6 keoi1 bei6 zi2 him3 dung1 fung1
730 | 萬事皆備,只欠東風,maan6 si6 gaai1 bei6 zi2 him3 dung1 fung1
731 | 萬事起頭難,maan6 si6 hei2 tau4 naan4
732 | 萬惡淫爲首,maan6 ok3 jam4 wai4 sau2
733 | 萬綠叢中一點紅,maan6 luk6 cung4 zung1 jat1 dim2 hung4
734 | 萬般皆下品,唯有讀書高,maan6 bun1 gaai1 haa6 ban2 wai4 jau5 duk6 syu1 gou1
735 | 萬變不離其宗,maan6 bin3 bat1 lei4 kei4 zung1
736 | 落地喊三聲,好醜命生成,lok6 dei6 haam3 saam1 seng1 hou2 cau2 meng6 saang1 seng4
737 | 落地開花,lok6 dei6 hoi1 faa1
738 | 薑是老的辣,茶是後來釅,goeng1 si6 lou5 dik1 laat6 caa4 si6 hau6 loi4 jim6
739 | 薑越老越辣,goeng1 jyut6 lou5 jyut6 laat6
740 | 薑還是老的辣,goeng1 waan4 si6 lou5 dik1 laat6
741 | 藥補不如食補,joek6 bou2 bat1 jyu4 sik6 bou2
742 | 蘇州過後冇艇搭,sou1 zau1 gwo3 hau6 mou5 teng5 daap3
743 | 蘿蔔青菜,各有所愛,lo4 baak6 ceng1 coi3 gok3 jau5 so2 oi3
744 | 虎毒不喫兒,fu2 duk6 bat1 hek3 ji4
745 | 虎毒不食子,fu2 duk6 bat1 sik6 zi2
746 | 虎父無犬子,fu2 fu6 mou4 hyun2 zi2
747 | 虎狼之年,fu2 long4 zi1 nin4
748 | 虎背熊腰,fu2 bui3 hung4 jiu1
749 | 虎視眈眈,fu2 si6 daam1 daam1
750 | 虎踞龍盤,fu2 geoi3 lung4 pun4
751 | 虎踞龍蟠,fu2 geoi3 lung4 pun4
752 | 虎頭蛇尾,fu2 tau4 se4 mei5
753 | 虛己以聽,heoi1 gei2 ji5 ting1
754 | 虛席以待,heoi1 zik6 ji5 doi6
755 | 虛張聲勢,heoi1 zoeng1 seng1 sai3
756 | 虛心使人進步,驕傲使人落後,heoi1 sam1 si2 jan4 zeon3 bou6 giu1 ngou6 si2 jan4 lok6 hau6
757 | 虛情假意,heoi1 cing4 gaa2 ji3
758 | 虛意逢迎,heoi1 ji3 fung4 jing4
759 | 虛應了事,heoi1 jing3 liu5 si6
760 | 虛應故事,heoi1 jing3 gu3 si6
761 | 虛懷若谷,heoi1 waai4 joek6 guk1
762 | 虛有其表,heoi1 jau5 kei4 biu2
763 | 虛無漂渺,heoi1 mou4 piu1 miu5
764 | 虛無縹緲,heoi1 mou4 piu1 miu5
765 | 虛無飄渺,heoi1 mou4 piu1 miu5
766 | 虛無飄眇,heoi1 mou4 piu1 miu5
767 | 虛與委蛇,heoi1 jyu5 wai1 ji4
768 | 號令如山,hou6 ling6 jyu4 saan1
769 | 螳螂捕蟬,黃雀在後,tong4 long4 bou6 sim4 wong4 zoek3 zoi6 hau6
770 | 蟻多摟死象,ngai5 do1 lau1 sei2 zoeng6
771 | 血流如注,hyut3 lau4 jyu4 zyu3
772 | 血流成河,hyut3 lau4 sing4 ho4
773 | 血海深仇,hyut3 hoi2 sam1 sau4
774 | 衆人皆知,zung3 jan4 gaai1 zi1
775 | 衆人皆醉我獨醒,zung3 jan4 gaai1 zeoi3 ngo5 duk6 sing2
776 | 衆叛親離,zung3 bun6 can1 lei4
777 | 衆怒難息,zung3 nou6 naan4 sik1
778 | 衆所周知,zung3 so2 zau1 zi1
779 | 衆目睽睽,zung3 muk6 kwai4 kwai4
780 | 衆目睽睽之下,zung3 muk6 kwai4 kwai4 zi1 haa6
781 | 衆說紛紜,zung3 syut3 fan1 wan4
782 | 行不改姓,坐不改名,hang4 bat1 goi2 sing3 zo6 bat1 goi2 ming4
783 | 行不更名,坐不改姓,hang4 bat1 gang1 ming4 zo6 bat1 goi2 sing3
784 | 行得快,好世界,haang4 dak1 faai3 hou2 sai3 gaai3
785 | 行船跑馬三分險,haang4 syun4 paau2 maa5 saam1 fan1 him2
786 | 補漏趁天晴,讀書趁年輕,bou2 lau6 can3 tin1 cing4 duk6 syu1 can3 nin4 hing1
787 | 要靚唔要命,jiu3 leng3 m4 jiu3 meng6
788 | 要風得風,要雨得雨,jiu3 fung1 dak1 fung1 jiu3 jyu5 dak1 jyu5
789 | 見一步行一步,gin3 jat1 bou6 haang4 jat1 bou6
790 | 解鈴還需繫鈴人,gaai2 ling4 waan4 seoi1 hai6 ling4 jan4
791 | 解鈴還須繫鈴人,gaai2 ling4 waan4 seoi1 hai6 ling4 jan4
792 | 言必信,行必果,jin4 bit1 seon3 hang4 bit1 gwo2
793 | 言教不如身教,jin4 gaau3 bat1 jyu4 san1 gaau3
794 | 言者無心,聽者有意,jin4 ze2 mou4 sam1 ting1 ze2 jau5 ji3
795 | 言者無意,聽者有心,jin4 ze2 mou4 ji3 ting1 ze2 jau5 sam1
796 | 言者無罪,聞者足戒,jin4 ze2 mou4 zeoi6 man4 ze2 zuk1 gaai3
797 | 言者諄諄,聽者藐藐,jin4 ze2 zeon1 zeon1 ting1 ze2 miu5 miu5
798 | 許勝不許敗,heoi2 sing3 bat1 heoi2 baai6
799 | 話不投機半句多,waa6 bat1 tau4 gei1 bun3 geoi3 do1
800 | 話到嘴邊留三分,waa6 dou3 zeoi2 bin1 lau4 saam1 fan1
801 | 誓願當食生菜,sai6 jyun6 dong3 sik6 saang1 coi3
802 | 說時遲,那時快,syut3 si4 ci4 naa5 si4 faai3
803 | 講就天下無敵,做就有心無力,gong2 zau6 tin1 haa6 mou4 dik6 zou6 zau6 jau5 sam1 mou4 lik6
804 | 識人好過識字,sik1 jan4 hou2 gwo3 sik1 zi6
805 | 識人要帶眼,sik1 jan4 jiu3 daai3 ngaan5
806 | 識少少扮代表,sik1 siu2 siu2 baan6 doi6 biu2
807 | 識時務者爲俊傑,sik1 si4 mou6 ze2 wai4 zeon3 git6
808 | 識英雄重英雄,sik1 jing1 hung4 zung6 jing1 hung4
809 | 財不可露眼,coi4 bat1 ho2 lou6 ngaan5
810 | 財到光棍手,一去冇回頭,coi4 dou3 gwong1 gwan3 sau2 jat1 heoi3 mou5 wui4 tau4
811 | 貧賤不能移,pan4 zin6 bat1 nang4 ji4
812 | 貧賤夫妻百事哀,pan4 zin6 fu1 cai1 baak3 si6 oi1
813 | 貨問三家不喫虧,fo3 man6 saam1 gaa1 bat1 hek3 kwai1
814 | 貨比三家不喫虧,fo3 bei2 saam1 gaa1 bat1 hek3 kwai1
815 | 貪婪是萬惡之源,taam1 laam4 si6 maan6 ok3 zi1 jyun4
816 | 貪字得個貧,taam1 zi6 dak1 go3 pan4
817 | 貪心不足蛇吞象,taam1 sam1 bat1 zuk1 se4 tan1 zoeng6
818 | 貴人出門招風雨,gwai3 jan4 ceot1 mun4 ziu1 fung1 jyu5
819 | 贏咗粒糖,輸咗間廠,jeng4 zo2 nap1 tong2 syu1 zo2 gaan1 cong2
820 | 走得嚤冇鼻哥,zau2 dak1 mo1 mou5 bei6 go1
821 | 趁你病,攞你命,can3 nei5 beng6 lo2 nei5 meng6
822 | 趁佢病,攞佢命,can3 keoi5 beng6 lo2 keoi5 meng6
823 | 跌咗個橙執返個桔,dit3 zo2 go3 caang2 zap1 faan1 go3 gat1
824 | 跌咗落地揦返拃沙,dit3 zo2 lok6 dei6 laa2 faan1 zaa6 saa1
825 | 跌落地下,揦返拃沙,dit3 lok6 dei6 haa2 laa2 faan1 zaa6 saa1
826 | 跌落地揦返拃沙,dit3 lok6 dei2 laa2 faan1 zaa6 saa1
827 | 跌落地都要揦返拃沙,dit3 lok6 dei6 dou1 jiu3 laa2 faan1 zaa6 saa1
828 | 路見不平,拔刀相助,lou6 gin3 bat1 ping4 bat6 dou1 soeng1 zo6
829 | 路遙知馬力,日久見人心,lou6 jiu4 zi1 maa5 lik6 jat6 gau2 gin3 jan4 sam1
830 | 跳出釜底進火坑,tiu3 ceot1 fu2 dai2 zeon3 fo2 haang1
831 | 跳落黃河都洗唔清,tiu3 lok6 wong4 ho4 dou1 sai2 m4 cing1
832 | 跳進黃河洗不清,tiu3 zeon3 wong4 ho4 sai2 bat1 cing1
833 | 踏破鐵鞋無覓處,得來全不費工夫,daap6 po3 tit3 haai4 mou4 mik6 cyu3 dak1 loi4 cyun4 bat1 fai3 gung1 fu1
834 | 踩死雞仔冇錢賠,caai2 sei2 gai1 zai2 mou5 cin2 pui4
835 | 身在曹營心在漢,san1 zoi6 cou4 jing4 sam1 zoi6 hon3
836 | 身在福中不知福,san1 zoi6 fuk1 zung1 bat1 zi1 fuk1
837 | 身教勝於言教,san1 gaau3 sing3 jyu1 jin4 gaau3
838 | 身教重於言教,san1 gaau3 zung6 jyu1 jin4 gaau3
839 | 車到山前必有路,船到橋頭自然直,ce1 dou3 saan1 cin4 bit1 jau5 lou6 syun4 dou3 kiu4 tau4 zi6 jin4 zik6
840 | 迅雷不及掩耳,seon3 leoi4 bat1 kap6 jim2 ji5
841 | 近官得力,近廚得食,gan6 gun1 dak1 lik6 gan6 ceoi4 dak1 sik6
842 | 近官得力,近廚得食,gan6 gun1 dak1 lik6 gan6 cyu4 dak1 sik6
843 | 近朱者赤,近墨者黑,gan6 zyu1 ze2 cek3 gan6 mak6 ze2 haak1
844 | 近水樓臺先得月,gan6 seoi2 lau4 toi4 sin1 dak1 jyut6
845 | 過而能改,善莫大焉,gwo3 ji4 nang4 goi2 sin6 mok6 daai6 jin1
846 | 過門都係客,gwo3 mun4 dou1 hai6 haak3
847 | 道不同不相爲謀,dou6 bat1 tung4 bat1 soeng1 wai4 mau4
848 | 道之所存,師之所存,dou6 zi1 so2 cyun4 si1 zi1 so2 cyun4
849 | 道所存者,乃師所存者,dou6 so2 cyun4 ze2 naai5 si1 so2 cyun4 ze2
850 | 遠水不能救近火,jyun5 seoi2 bat1 nang4 gau3 gan6 fo2
851 | 遠水不解近渴,jyun5 seoi2 bat1 gaai2 gan6 hot3
852 | 遠親不如近鄰,jyun5 can1 bat1 jyu4 gan6 leon4
853 | 遲來先上岸,ci4 loi4 sin1 soeng5 ngon6
854 | 遲到好過冇到,ci4 dou3 hou2 gwo3 mou5 dou3
855 | 酒逢知己千杯少,zau2 fung4 zi1 gei2 cin1 bui1 siu2
856 | 酒醉三分醒,zau2 zeoi3 saam1 fan1 seng2
857 | 酒香不怕巷子深,zau2 hoeng1 bat1 paa3 hong6 zi2 sam1
858 | 醉翁之意不在酒,zeoi3 jung1 zi1 ji3 bat1 zoi6 zau2
859 | 醜婦終須見家翁,cau2 fu5 zung1 seoi1 gin3 gaa1 jung1
860 | 醫者父母心,ji1 ze2 fu6 mou5 sam1
861 | 醫返都嘥藥費,ji1 faan1 dou1 saai1 joek6 fai3
862 | 重賞之下,必有勇夫,cung5 soeng2 zi1 haa6 bit1 jau5 jung5 fu1
863 | 重陽兼霜降,有穀冇處裝,cung4 joeng4 gim1 soeng1 gong3 jau5 guk1 mou5 cyu5 zong1
864 | 野火燒不盡,春風吹又生,je5 fo2 siu1 bat1 zeon6 ceon1 fung1 ceoi1 jau6 sang1
865 | 金玉其外,敗絮其中,gam1 juk6 kei4 ngoi6 baai6 seoi5 kei4 zung1
866 | 金玉其表,敗絮其中,gam1 juk6 kei4 biu2 baai6 seoi5 kei4 zung1
867 | 金窩銀窩不如自己的狗窩,gam1 wo1 ngan4 wo1 bat1 jyu4 zi6 gei2 dik1 gau2 wo1
868 | 金錢不能買來幸福,gam1 cin4 bat1 nang4 maai5 loi4 hang6 fuk1
869 | 金錢非萬能,gam1 cin4 fei1 maan6 nang4
870 | 針冇兩頭利,zam1 mou5 loeng5 tau4 lei6
871 | 針唔拮到肉唔知痛,zam1 m4 gat1 dou3 juk6 m4 zi1 tung3
872 | 鋤頭唔響,番薯唔香,co4 tau2 m4 hoeng2 faan1 syu2 m4 hoeng1
873 | 鋤頭唔響,蕃薯唔香,co4 tau2 m4 hoeng2 faan1 syu2 m4 hoeng1
874 | 鋸到一頸血,goe1 dou3 jat1 geng2 hyut3
875 | 錢不是萬能的,沒錢是萬萬不能的,cin2 bat1 si6 maan6 nang4 dik1 mut6 cin2 si6 maan6 maan6 bat1 nang4 dik1
876 | 錢是萬惡之源,cin2 si6 maan6 ok3 zi1 jyun4
877 | 鐵拐李打足球,一腳踢,tit3 gwaai2 lei5 daa2 zuk1 kau4 jat1 goek3 tek3
878 | 鐵腳馬眼神仙肚,tit3 goek3 maa5 ngaan5 san4 sin1 tou5
879 | 鑊鑊新鮮鑊鑊甘,wok6 wok6 san1 sin1 wok6 wok6 gam1
880 | 長江後浪推前浪,coeng4 gong1 hau6 long6 teoi1 cin4 long6
881 | 長流水,不斷線,coeng4 lau4 seoi2 bat1 tyun5 sin3
882 | 長痛不如短痛,coeng2 tung3 bat1 jyu4 dyun2 tung3
883 | 門庭冷落,門堪羅雀,mun4 ting4 laang5 lok6 mun4 ham1 lo4 zoek3
884 | 開天殺價,落地還錢,hoi1 tin1 saat3 gaa3 lok6 dei6 waan4 cin2
885 | 開天索價,落地還錢,hoi1 tin1 sok3 gaa3 lok6 dei6 waan4 cin2
886 | 開弓沒有回頭箭,hoi1 gung1 mut6 jau5 wui4 tau4 zin3
887 | 防人之心不可無,fong4 jan4 zi1 sam1 bat1 ho2 mou4
888 | 防患於未然,fong4 waan6 jyu1 mei6 jin4
889 | 隔行如隔山,gaak3 hong4 jyu4 gaak3 saan1
890 | 雞春咁密都哺得出雞仔,gai1 ceon1 gam3 mat6 dou1 bou6 dak1 ceot1 gai1 zai2
891 | 雞肶打人牙骹軟,gai1 bei2 daa2 jan4 ngaa4 gaau3 jyun5
892 | 雞蛋碰石頭,gai1 daan2 pung3 sek6 tau4
893 | 雞蛋裏挑骨頭,gai1 daan2 leoi5 tiu1 gwat1 tau4
894 | 雞髀打人牙骹軟,gai1 bei2 daa2 jan4 ngaa4 gaau3 jyun5
895 | 難登大雅之堂,naan4 dang1 daai6 aa1 zi1 tong4
896 | 雷公打豆腐,揀軟的欺,leoi4 gung1 daa2 dau6 fu6 gaan2 jyun5 dik1 hei1
897 | 雷聲大,雨點小,leoi4 sing1 daai6 jyu5 dim2 siu2
898 | 露出狐狸尾巴,lou6 ceot1 wu4 lei2 mei5 baa1
899 | 霸住屎坑唔屙屎,baa3 zyu6 si2 haang1 m4 o1 si2
900 | 霸住屎坑唔痾屎,baa3 zyu6 si2 haang1 m4 o1 si2
901 | 青出於藍,cing1 ceot1 jyu1 laam4
902 | 青出於藍而勝於藍,cing1 ceot1 jyu1 laam4 ji4 sing3 jyu1 laam4
903 | 靠山喫山,靠水喫水,kaau3 saan1 hek3 saan1 kaau3 seoi2 hek3 seoi2
904 | 靠得住,豬乸都會上樹,kaau3 dak1 zyu6 zyu1 naa2 dou1 wui5 soeng5 syu6
905 | 面朝黃土背朝天,min6 ciu4 wong4 tou2 bui3 ciu4 tin1
906 | 面無四兩肉,min6 mou4 sei3 loeng2 juk6
907 | 面青口脣白,min6 ceng1 hau2 seon4 baak6
908 | 鞠躬盡瘁,死而後已,guk1 gung1 zeon6 seoi6 sei2 ji4 hau6 ji5
909 | 項莊舞劍,志在沛公,hong6 zong1 mou5 gim3 zi3 zoi6 pui3 gung1
910 | 項莊舞劍,意在沛公,hong6 zong1 mou5 gim3 ji3 zoi6 pui3 gung1
911 | 順得哥情失嫂意,seon6 dak1 go1 cing4 sat1 sou2 ji3
912 | 順我者昌,逆我者亡,seon6 ngo5 ze2 coeng1 jik6 ngo5 ze2 mong4
913 | 頭痛醫頭,腳痛醫腳,tau4 tung3 ji1 tau4 goek3 tung3 ji1 goek3
914 | 食碗面,反碗底,sik6 wun2 min6 faan2 wun2 dai2
915 | 食米唔知價,sik6 mai5 m4 zi1 gaa3
916 | 食米唔知米貴,sik6 mai5 m4 zi1 mai5 gwai3
917 | 食飯唔知米貴,sik6 faan6 m4 zi1 mai5 gwai3
918 | 食飽無憂米,sik6 baau2 mou4 jau1 mai5
919 | 食飽飯冇屎屙,sik6 baau2 faan6 mou5 si2 o1
920 | 食飽飯冇屎痾,sik6 baau2 faan6 mou5 si2 o1
921 | 食飽飯等屎屙,sik6 baau2 faan6 dang2 si2 o1
922 | 食鹽仲多過你食米,sik6 jim4 zung6 do1 gwo3 nei5 sik6 mai5
923 | 食鹽多過你食米,sik6 jim4 do1 gwo3 nei5 sik6 mai5
924 | 食鹽多過你食米,行橋多過你行路,sik6 jim4 do1 gwo3 nei5 sik6 mai5 haang4 kiu4 do1 gwo3 nei5 haang4 lou6
925 | 食龍肉都無味,sik6 lung4 juk6 dou1 mou4 mei6
926 | 鷸蚌相爭,漁人得利,neot6 pong5 soeng1 zang1 jyu4 jan4 dak1 lei6
927 | 鷸蚌相爭,漁翁得利,wat6 pong5 soeng1 zang1 jyu4 jung1 dak1 lei6
928 | 麻雀雖小,五臟俱全,maa4 zoek3 seoi1 siu2 ng5 zong6 keoi1 cyun4
929 | 麻鷹唔管管雞仔,maa4 jing1 m4 gun2 gun2 gai1 zai2
930 | 黃皮樹了哥,唔熟唔食,wong4 pei4 syu6 liu5 go1 m4 suk6 m4 sik6
931 | 黃蜂尾後針,最毒婦人心,wong4 fung1 mei5 hau6 zam1 zeoi3 duk6 fu5 jan4 sam1
932 | 黃鼠狼給雞拜年,沒安好心,wong4 syu2 long4 kap1 gai1 baai3 nin4 mut6 on1 hou2 sam1
933 | 黑狗偷食,白狗當災,haak1 gau2 tau1 sik6 baak6 gau2 dong1 zoi1
934 | 黑狗偷食,白狗當災,hak1 gau2 tau1 sik6 baak6 gau2 dong1 zoi1
935 | 黑狗得食,白狗當災,haak1 gau2 dak1 sik6 baak6 gau2 dong1 zoi1
936 | 黑狗得食,白狗當災,hak1 gau2 dak1 sik6 baak6 gau2 dong1 zoi1
937 | 龍牀不及狗竇,lung4 cong4 bat1 kap6 gau2 dau3
938 | 龍牀不如狗竇,lung4 cong4 bat1 jyu4 gau2 dau3
939 |
--------------------------------------------------------------------------------