CRA现学现卖

0 前言

0.1 背景

        作为IVD(In Vitro Diagnostic,体外诊断)行业的临床相关从业者,工作中存在大量的技术含量低、机械、重复的工作,但是IVD企业的临床部门一般不会有很细的分工,所有工作都由CRA(Clinical Research Associate,临床监察员)包办,导致CRA被这些技术含量低、机械、重复的工作束缚。大多数CRA并不掌握编程相关知识,但CRA的许多工作又非常适合通过程序自动完成。由此我想到从零开始学习编程,并将学习的过程、体会、结果记录下来,以期能够对同行的工作有一些帮助。

0.2 语言选择

        看了网上的一些介绍,感觉对于0编程基础的职场人来说,Python应该是最合适的选择。Python功能强大,有丰富的第三方库,优秀的教程多……所以最终选择了Python。

0.3 学习资料

        由于完全没有基础,第一步想要先对编程有个最初步的认识,所以选择了中国大学MOOC上北理工的Python语言程序设计这门课先学习一些基础知识。

1 项目一  受试者姓名转拼音缩写

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.1 汉字转拼音

1.2.1.1 寻找合适的第三方库

        这个姓名最重要的部分就是把汉字转化成对应的拼音,在百度上直接搜“python汉字转拼音”,发现AI推荐了pypinyin这个第三方库,还给出了一部分示例,感觉能满足需求之后就选择了这个库。

1.2.1.1 第三方库安装

        第一座大山来了,AI告诉我:

首先需要安装这个库:

pip install pypinyin

        在Python中输入并运行发现报错,但是怎么看我都没写错。一番查询后发现并不是在Python里输入,而是在命令行里输入。果断Win+R然后cmd。

1.2.1.2 汉字转拼音

        AI给出的示例:

from pypinyin import pinyin, Style
 
def chinese_to_pinyin(text, style=Style.TONE3):
    return ''.join([y[0] for y in pinyin(text, style=style)])
 
# 示例
text = "中国"
pinyin_text = chinese_to_pinyin(text)
print(pinyin_text)  # 输出可能是 'zhongguo' 或 'zhōngguó' 等,取决于所需的声调

        尝试了一下发现pinyin函数返回的拼音是带声调的,但是我并不想要声调,就去搜索pypinyin,看看有没有更适合我的函数,发现了lazy_pinyin返回的是不带声调的拼音,尝试了一下成功了。

from pypinyin import lazy_pinyin
hanzi = input()
print(lazy_pinyin(hanzi))
1.2.1.3 字符串转换

        运行之后得到:

输入:科比

输出:['ke', 'bi']

1.2.2 导入受试者姓名

1.3 最终代码

        最终完成后的代码如下,相关代码已发布在: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.4 不足

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值