临床试验受试者姓名转拼音缩写

1.1 背景

       在临床试验中,为了保护受试者隐私,所以在所有临床试验相关文件中受试者的姓名均以拼音缩写替代。

1.1.1 缩写规则

        一般缩写均为4位大写字母,具体规则为:

                姓名为2个汉字的,取每个汉字的前2位拼音;

                姓名为3个汉字的,取前2个汉字的第1位拼音,加第3个汉字的前2位拼音;

                姓名为4个汉字的,取每个汉字的第1位拼音。

        存在特殊情况,汉字中存在单音节字,当患者姓名中存在这些单音节字且同时按照上述缩写规则需要取2位拼音的,第2位以符号“-”补齐。

1.1.2 示例

        示例如下:

                姓名:科比,缩写:KEBI

                姓名:嫦娥,缩写:CHE-

                姓名:川建国,缩写:CJGU

                姓名:安倍晋三,缩写:ABJS

1.2 Python实现

        相关代码已发布在:

        1.飞桨、2.inscode

#用于临床试验中患者姓名缩写自动转换
#先安装所需的第三方库
pip install pandas
pip install openpyxl
pip install pypinyin
from pypinyin import lazy_pinyin
import pandas as pd
from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('test.xlsx')#读取test.xlsx文件
ws = wb.active
for col in ws.iter_cols(min_col=1, max_col=1, values_only=True):
    for Hanzi in col:
        if len(Hanzi) == 2:
            Hanzi1 = Hanzi[0]
            Hanzi2 = Hanzi[1]
            print(str.upper(str(lazy_pinyin(Hanzi1)))[2:4], end='')
            print(str.upper(str(lazy_pinyin(Hanzi2)))[2:4])
        elif len(Hanzi) == 3:
            Hanzi1 = Hanzi[0]
            Hanzi2 = Hanzi[1]
            Hanzi3 = Hanzi[2]
            print(str.upper(str(lazy_pinyin(Hanzi1)))[2], end='')
            print(str.upper(str(lazy_pinyin(Hanzi2)))[2], end='')
            print(str.upper(str(lazy_pinyin(Hanzi3)))[2:4])
        elif len(Hanzi) == 4:
            Hanzi1 = Hanzi[0]
            Hanzi2 = Hanzi[1]
            Hanzi3 = Hanzi[2]
            Hanzi4 = Hanzi[3]
            print(str.upper(str(lazy_pinyin(Hanzi1)))[2], end='')
            print(str.upper(str(lazy_pinyin(Hanzi2)))[2], end='')
            print(str.upper(str(lazy_pinyin(Hanzi3)))[2], end='')
            print(str.upper(str(lazy_pinyin(Hanzi4)))[2])
        else:
            print("姓名错误,请检查后重试")

 1.3 不足

        对于1.1.1 缩写规则中提到的单音节字的特殊情况暂不能完美处理。

你可能感兴趣的:(python,pip,健康医疗,职场和发展)