【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()