给卡帕多奇亚手作店做库存表,我把土耳其语字符排序修好了
工作室的库存表一直用 Excel,三年前建的,卖手工皂和编织包。上个月从伊斯坦布尔进了一批橄榄油皂,供应商的货单是土耳其语,品名里有「Şişli」「Çamlıca」「İmrahor」这种带点字母的地名。我把货单粘进库存表,按品名排序,结果 Ş 和 İ 全被排到了 Z 后面,和 S、I 分在两处。货架上按表摆放,找一块 Çamlıca 的皂要翻三排。数据量不大,四百多行,但每周盘一次货,每次多花四十分钟。
我先试了 Excel 自带的排序,选「土耳其语」,没用——它只认区域设置,我的系统是中文,Ş 被当成异体字归到 S 附近,İ 直接掉进符号区。后来换 LibreOffice,情况一样。最后我把品名列单独导出来,用 Python 处理:
import locale
locale.setlocale(locale.LC_COLLATE, 'tr_TR.UTF-8')
rows.sort(key=lambda r: locale.strxfrm(r['品名']))
系统里没装 tr_TR 的 locale,补了一句 sudo locale-gen tr_TR.UTF-8 才跑通。跑完把顺序写回 Excel,品名列前面加一列「排序号」,货架就按这个号摆。
为什么不用拼音或英文转写?试过。Şişli 转成 Sisli,Çamlıca 转成 Camlica,排序对了,但货单上印的是原字符,扫一眼对不上,盘货时反而更慢。土耳其语字母表里 Ç、Ğ、İ、Ö、Ş、Ü 各有固定位置,İ 排在 I 前面,Ş 在 S 后面,用 locale 排序是唯一不改变原字符又能让顺序符合当地人习惯的做法。代价是每次进货都得跑一遍脚本,不能直接在 Excel 里拖。
失效的地方我也踩过:strxfrm 对纯数字和混排的品名不友好,比如「No.12 Çay」会被排到字母区后面;还有一次供应商货单是 PDF 转的,İ 被拆成了 I 加一个组合点,locale 认不出来,排序又乱了。所以现在入库前先统一做一次 Unicode NFC 规范化,再排序。
你们在土耳其做小生意或整理本地资料时,遇到这种带点字母的排序,是直接改文件名还是留原字符?我挺想知道别人怎么处理货架和表格对不上的问题。
0 条评论
还没有评论,写下第一条。