【C+python】数据处理之获取文本文件指定部分内容问题

【C+python】数据处理之获取文本文件指定部分内容问题

一、问题描述

        在做数据处理的时候,遇到一个指向获取自己需要的部分的数据,但是始终没有现成的函数可以套用(可能和博主的知识有关或许有,只是博主未能get到)

二、处理文件格式

在这里插入图片描述
       只获取除去数值部分的数据

三、代码实现

3.1 方式一

#方法一
with open("ceshi.txt","r") as original:
    with open("result.txt","w") as result:
        for line in original:
            split_into_list = line.split()
            for x in split_into_list[::-1]:
                if x.startswith("199801"):
                    split_into_list.remove(x)
                    result.write("\n"+(" ".join(split_into_list)))

3.2 方式二

# 方法二
with open("ceshi.txt","r") as fp:
    with open("result.txt","w") as fp2:
        for line in fp:
            new_line = line[23:]
            fp2.write(("".join(new_line))) # fp2.write("\n"+("".join(new_line)))

3.3 方式三

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int abnormalWordsHang(FILE *fp1);

int main(int argc, char *argv[]) {

  int lines = 0;
  char *pFile;

  if (argc == 1 || argc == 2) {
    printf("[标准输出格式之打印到控制台]:\tjiequ.exe input.txt -out\n");
    printf("[说明1]:\t\t\tinput.txt 需是指定文本文档内容格式\n");
    printf("[说明2]:\t\t\t需要根据input.txt文本大小随时更改程序内存分配\n");
    exit(0); // 非正常运行导致退出程序;
  }

  if (argc == 3) {
    pFile = strrchr(argv[1], '.'); // 判断输入的文件名最后输出.的位置
    if (pFile != NULL) {
      if (strcmpi(pFile, ".txt") == 0) // 等于文本文件
      {
        if (strcmpi(argv[2], "-out") == 0) {
          // 执行结果
          char *f1 = argv[1];         //  后台参数
          FILE *fp1 = fopen(f1, "r"); // 创建文件指针及打开文本文件
          if (fp1 == NULL) {
            printf("文件 %s 打开时发生错误", f1);
            exit(1);
          }

          abnormalWordsHang(fp1); // 调用自定义函数
          fclose(fp1);            // 关闭文件指针
        } else {
          printf("您输入的:%s非指定参数\n", argv[2]);
        }
      } else {
        printf("您输入的:%s非文本文件\n", argv[1]);
      }
    }
  } else {
    printf("输入参数个数不符合规范\n");
  }
  return 0;
}

// 创建子函数
int abnormalWordsHang(FILE *fp1) {

  int lines = 0;
  char line[1000];  
  char str[500];    

  while (fgets(line, sizeof(line), fp1) != NULL) // 按行读取
  {
    lines++; // 统计行数
    // printf(line); // 打印文本
    sscanf(line, "%*[^m]m%[^\n]", str); // 使用正则表达式:从:开始读取到最后
    // sscanf(line, "%[^m]", str); // 使用正则表达式:从/开始读取到最后
    printf("%s", str);
    printf("\n");
  }

  // printf("\n 一共 %d 行", lines);
  return 1;
}

3.4 方式四

file_object = open('ceshi.txt', 'r')
# f = open('out.txt','w', encoding='UTF-8')
try:
    for line in file_object:
        g = re.search('\d{8}-\d{1,}-\d{1,}-\d{1,}/m(.*)', line)
        if g:
            print(g.group(1))
            #f.writelines(line)
finally:
    file_object.close()

3.5 结果

在这里插入图片描述

发布了213 篇原创文章 · 获赞 303 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/Jiajikang_jjk/article/details/89439991