首页 > 其他分享 >提取数据(实验室检查)

提取数据(实验室检查)

时间:2024-02-12 23:00:13浏览次数:28  
标签:提取 String 检查 Pattern name matcher sb line 实验室


/**
* 实验室检查
*/
public class BeginPathology {
public static void main(String[] args) throws Exception {
try {

String folderPath = "C:\\Users\\kfeng5\\OneDrive - DXC Production\\Desktop\\年假工作";
File folder = new File(folderPath);
File[] files = folder.listFiles();

if (files != null) {
for (File file : files) {
if (file.getName().endsWith(".pdf")) {
PDDocument document = PDDocument.load(file);
PDFTextStripper stripper = new PDFTextStripper(); // 初始化文本剥离器
String text = stripper.getText(document);
String[] lines = text.split("\n");

boolean nameFlag = false;
boolean infoFlag = false;
boolean underFlag = false;
boolean numberFlag = false;
String name = null;
String type = null;
String[] split = null;
StringBuilder sb = new StringBuilder();
Map<String, String> hashMap = new HashMap<>();
for (String line : lines) {

Pattern compile0 = Pattern.compile("^\\d+(.*)");
Matcher matcher0 = compile0.matcher(line.trim());
if (matcher0.find()) {
if (StringUtils.isBlank(matcher0.group(1))) {
continue;//跳出此line
}
}

if (line.startsWith("附件")) {
nameFlag = true;
continue;
}

if (nameFlag) {
Pattern pattern = Pattern.compile("(.*)诊疗方案");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
name = matcher.group(1);
nameFlag = false;
continue;
}
}

Pattern compile1 = Pattern.compile("(.*)、实验室检查");
Matcher matcher1 = compile1.matcher(line.trim());
if (matcher1.find()) {
infoFlag = true;
continue;//跳出此line
}
if(infoFlag){
if(line.length()>1){
if(line.charAt(1)=='、'){
System.out.println(name+"!"+type+"!"+sb.toString().replaceAll("\r",""));
infoFlag = false;
break;
}
}else {
System.out.println(name + "!" + "此行没有第二个字符,不能检测是否有顿号");
}

//TODO 当有以此开头的非目标内容时,会被按目标内容格式输出,所以数据异常,需调整
if (line.startsWith("(")) {
sb = getNewBuilder(sb, name, type);
//切割统一3位。得到(一)xxx检查 的xxx
type = line.substring(3).replaceAll("\r","");
underFlag = true;
continue;//跳出此line
}
if (underFlag) {
Pattern compile2 = Pattern.compile("^\\d\\.(.*)");
Matcher matcher2 = compile2.matcher(line.trim());
if(matcher2.find()){
sb = getNewBuilder(sb, name, type);
line = matcher2.group(1);
//split = matcher2.group(1).split(":", 2);
}
sb.append(line);
continue;
}
}
}
document.close();
}
}
}
}catch(Exception e){
throw new Exception(e);
}
}

//检测到标志,如果sb不为空,输出sb的内容
private static StringBuilder getNewBuilder(StringBuilder sb, String name, String type) {
if (sb.toString().length() != 0 && sb != null) {
System.out.println(name + "!" + type + "!" + sb.toString().replaceAll("\r", ""));
sb = new StringBuilder();
}
return sb;
}
}

取String类型的字符。对象.charAt(位)。
String对象类型内容的比较,用对象1.equals(对象2)方法。

标签:提取,String,检查,Pattern,name,matcher,sb,line,实验室
From: https://www.cnblogs.com/fengok/p/18014229

相关文章

  • 要想Pod好--健康检查少不了
    要想Kubernetes里每个服务的可用性更高,那么对Pod的健康检查是少不了的。Pod生命周期和健康检查是我们最常接触的基础知识,虽说是基础吧,但如果理解不好,出现问题时很容易抓耳挠腮,揪头发。本文主要从以下6个方面介绍Pod的健康检查:刚接触K8S的糗事、Pod生命周期、重启策略、健康检查、......
  • 03-数据提取
    本节概要:如何提取嵌入在HTML格式中的文本信息。很多网站请求后,返回的数据是嵌套在HTML格式中的。例如:5xclass.cn对于这种情况想要提取其中的数据,常见有两种方法:基于bs4模块(本节重点)基于xpath模块1.HTML格式<div><h1class="item">武沛齐</h1><ulclass="item">......
  • ()氏提取器
    还愿。远古时期填的一个歌(取badapple曲)去描述更远古的一个广为人知的事。大概的曲谱:写的抽象的词:1七月盛夏中,草木凋零,ix讳会锁伟大之降落,寒光震慑hn中沼泽。撮盐入火般,崭露锋芒,秋来春去鼎盛突逢祸,竟遭贬谪西藏。会锁锁苍穹,东方水神慑众峰,卧水尝雪御西藏,坐断西南塞四方。......
  • 提取数据
    packageorg.pdffolder.pdffolder01;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.text.PDFTextStripper;importorg.apache.tika.utils.StringUtils;importjava.io.File;importjava.util.regex.Matcher;importjava.util.regex.Pattern;......
  • linux 中如何提取一列中纯数字或者纯字母的行
     001、纯数字[root@PC1test1]#lsa.txt[root@PC1test1]#cata.txt##测试文本sdf3247fy323td34342fff435tih6334s234dfg65[root@PC1test1]#grep"^[0-9]\+$"a.txt##提取纯数字的行3424356334 002、纯字母[root@PC1t......
  • 在K8S中,Pod的健康检查方式有哪些?
    在Kubernetes(K8s)中,Pod的健康检查主要通过两种类型的探针实现:LivenessProbe和ReadinessProbe。LivenessProbe(存活探针):用于检测容器是否处于正常运行状态。如果LivenessProbe失败,则表明容器已不再健康,并且kubelet会采取相应行动,通常是重启容器。LivenessProbe可......
  • 特征提取
    PyRadiomics配置文件示例(YAML格式:.yaml)imageType:Original:enabled:trueLoG:enabled:trueWavelet:enabled:trueExponential:enabled:truefeatureClass:shape,firstorder,glcm,glrlm,glszm,ngtdm,gldmbinWidth:25resampledPi......
  • 使用NumPy实现对满足条件的Tensor索引和值的提取
    在Python中,使用NumPy库可以方便地进行对多维数组(即Tensor)的操作。本文将介绍如何使用NumPy库实现对满足条件的Tensor索引和值的提取,以便读者更好地理解和应用这些功能。一、背景知识NumPy是Python中用于科学计算的核心库之一,提供了多维数组对象和各种工具,可以用来处理数组、矩阵以......
  • powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用power
    powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用powercfg命令,用户和系统管理员可以查询、更改、导出、导入电源计划设置,检查电池状态,以及分析系统能耗情况等。这个工具非常有用,尤其是在需要优化电池使用时间、调整电源计划以提高性能或节能时。为......
  • 【iOS ARKit】人形提取
        为解决人形分离和深度估计问题,ARKit新增加了SegmentationBuffer(人体分隔缓冲区)和EstimatedDepthDataBuffer(深度估计缓冲区)两个缓冲区。人体分隔缓冲区作用类似于图形渲染管线中的StencilBuffer(模板缓冲区),用于区分人形区域与背景区域,它是一个像素级的缓冲区,用于......