分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。

文件:url80.ctfile.com/f/25127180-560486350-488a56
(访问密码:551685)


以下内容无关:

第一次接触文件读写是在大一的C语言教材中,当时哼哧吧唧的学的贼费劲,虽然最后也学会了,但好像没怎么用过。

在后来,就是在OJ上刷题的时候,编写的代码有时候连样例都不能通过;

这个时候就需要各种修改,然后各种输入样例,调试起来显得很费力,差不多这个时候,才正式开始使用文件读写。

体验真的棒~~

•C中的文件读写-freopen
函数简介
  freopen 是被包含于 C标准库头文件 stdio.h 中的一个函数,用于重定向输入输出流。

该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证流是可靠的。

函数声明
FILE freopen(const char _FileName, const char* _Mode, FILE* _Stream );

_FileName:需要重定向的文件名或文件路径
_Mode:代表文件访问权限的字符串
“r” 表示 只读访问
“w” 表示 只写访问
“a” 表示 追加写入
_Stream:需要被重定向的文件流
stdin:表示输入重定向(从指定文件中读取数据到程序中)
stdout:表示输出重定向(将程序中输出的数据输入到指定文件中)
返回值:如果成功,则返回指向该输出流的文件指针,否则返回为NULL
测试输出重定向(写文件)
  新建一个项目,并命名为文件读写;

在该项目中创建一个 C中的文件读写.c 文件,并添加如下代码:

#include<stdio.h>
#define FILENAME “FILEC.txt”//文件名

void write()
{
freopen(FILENAME, “w”, stdout);

printf("测试向FILEC.txt中写文件\n");

}
int main()
{
write();

return 0;

}

运行该代码,你会发现,在项目文件读写的文件夹下多出一个 FILEC.txt 的文件,打开该文件,你会惊奇的发现,该文件的内容就是你在程序中通过 printf 输出的语句。

通过代码可以看出,freopen 函数只出现在了 write() 函数中,那么如果在主函数中输出 “Hello World”,会输出到哪里呢?

让我们通过代码来测试一下。

void write()
{
freopen(FILENAME, “w”, stdout);

printf("测试向FILEC.txt中写文件\n");

}
int main()
{
printf(“TEST1 : Hello World\n”);
write();
printf(“TEST2 : Hello World\n”);

return 0;

}

运行该代码,你会发现,在控制台只输出了 “TEST1 : Hello World”:

少的那一句呢?

莫非是输出到 FILEC.txt 中了,让我们一探究竟。

果然在这里,通过这个测试,就能发现,在语句 freopen(FILENAME, “w”, stdout); 调用后,所有的输出语句都写到了 FILEC.txt 中。

C 语言中提供了文件读写的关闭语句 fclose(stdout) ,那可不可以通过该语句实现随开随关呢?

让我们尝试在 write() 中使用该语句。

void write()
{
freopen(FILENAME, “w”, stdout);

printf("测试向FILEC.txt中写文件\n");fclose(stdout);

}
int main()
{
printf(“TEST1 : Hello World\n”);
write();
printf(“TEST2 : Hello World\n”);

return 0;

}

让我们来运行一下修改后的程序。

运行结果

在 VS2022 上,直接报错了:

而在 CodeBlocks 中测试,成功运行了:

但是, FILEC.txt 文件中却丢失了 printf(“TEST2 : Hello World\n”); 语句的输出结果:

所以,通过测试可知,并不能通过 fclose(stdout); 语句实现随开随关 ,正确的写法应该是:

#include<stdio.h>
#define FILENAME “FILEC.txt”//文件名

void write()
{
freopen(FILENAME, “w”, stdout);

printf("测试向FILEC.txt中写文件\n");

}
int main()
{
printf(“TEST1 : Hello World\n”);

write();printf("TEST2 : Hello World\n");fclose(stdout);//放置到程序结尾处
return 0;

}

测试输入重定向(读文件)
  在程序所在目录下新建一个 Input.txt 文件,并输入如下信息:

运行如下代码:

#include<stdio.h>
#define FILENAME “Input.txt”

int main()
{
freopen(FILENAME,“r”,stdin);//读文件

char s[100];
while (scanf("%s", s) != EOF)puts(s);return 0;

}

运行该程序,你会发现,并不需要输入任何数据:

控制台输出的内容刚好是 Input.txt 中的内容。

scanf("%s", s) != EOF 表示的是读取到文件结尾
FILENAME 也可以换成 Input.txt 的具体路径
E:\Documents\Visual Studio for C++\文件读写\文件读写\Input.txt

其中,路径中的 “\” 可以换成 ‘/’,但不能是 ‘’
  同理,我们也可以用 fclose(stdin); 来关闭该输入流,但同输出流一样,应该放到程序结尾出:

#include<stdio.h>
#define FILENAME “Input.txt”

int main()
{
freopen(FILENAME,“r”,stdin);//读文件

char s[100];
while (scanf("%s", s) != EOF)puts(s);fclose(stdin);//放到程序结尾处
return 0;

}

•C++中的文件读写-fstream
函数简介
  C++中对文件操作需要包含头文件 (file stream,文件流)。

ofstream:写操作(output file stream)
ifstream: 读操作(input file stream)
fstream : 读写操作(file stream)
写文件
步骤

创建流对象:ofstream ofs;
打开文件:ofs.open(“文件名/文件路径”,打开方式);
写数据:ofs << “写入的数据”; (将 cout 改为 ofs)
关闭文件:ofs.close();
文件打开方式

ios::out :为写文件而打开文件
ios::app :追加方式写文件
  在代码所在的文件夹下新建一个 FILEC++.txt 文件,添加如下数据:

并运行如下代码:

#include
#include//包含头文件
using namespace std;
#define FILENAME “FILEC++.txt”

void write()
{
ofstream ofs;//创建流对象
ofs.open(FILENAME, ios::out);//打开文件

ofs << "测试向FILEC++.txt中写文件" << endl;//写数据ofs.close();//关闭文件

}
int main()
{
write();

return 0;

}

打开 FILEC++.txt 查看文件内容变化。

你会发现,通过 ios::out 方式打开文件,之前的内容被覆盖了。

更改文件打开方式:

void write()
{
ofstream ofs;//创建流对象
ofs.open(FILENAME, ios::app);//打开文件

ofs << "测试向FILEC++.txt中写文件-2.0" << endl;//写数据ofs.close();//关闭文件

}

查看 FILEC++.txt 中的内容:

可以测试出, ios::app 是在原文件的基础上向后追加内容。

由于是通过创建 ofs 来进行写文件操作,那么原本的输出语句就不会报错。

python实现分词算法代码相关推荐

  1. python实现rsa加密解密代码_使用python实现rsa算法代码

    RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名. 维基百科给出的RSA算法简介如下: 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息.她可以 ...

  2. 基于MATLAB与Python的DBSCAN算法代码

    接上文,我们详细介绍了DBSCAN与几种常见聚类算法的对比与流程,DBSCAN聚类算法最为特殊,它是一种基于密度的聚类方法,聚类前不需要预先指定聚类的个数,接下来将DBSCAN分析代码分享 Pytho ...

  3. mysql怎么把表中的内容分词_用mysql数据库写的分词算法代码

    我辛苦的整了几天才整好的 拿来给大家分享一下希望可以帮助大家 以下分为四步:每步都有注释说明的 #region 一.先从article表里查询数据 /// /// 一.先从article表里查询数据 ...

  4. python apriori_python apriori算法代码怎么实现

    展开全部 class Apriori(object): def __init__(self, filename, min_support, item_start, item_end): self.fi ...

  5. python堆排序算法代码_python堆排序算法实例代码

    python 实现堆排序算法代码,需要的朋友可以参考下 代码如下:#!/usr/bin/python import sys def left_child(node): return node * 2 ...

  6. 中文分词算法python_Python FMM算法的中文分词器实现方法源码

    这是一篇基于Python代码使用FMM算法达到中文分词效果实现方法的文章.中文语句分词因为编码的关系在Python语言中并不是很好处理,关于中文乱码与编码的问题解决方法,可以参考玩蛇网的Python中 ...

  7. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  8. 正向最大匹配算法 python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  9. 自然语言处理实验—分词算法(含python代码及详细例子讲解)

    自然语言处理实验-分词算法 最近在学自然语言处理,这是第一个上机实验自然语言处理的分词算法,也是自然语言处理比较入门的算法.和大家分享一下. 首先,自然语言处理,英文是(Nature Language ...

最新文章

  1. 来看看顶会大佬是如何研究计算机视觉的
  2. javaScript的DOM(一)
  3. JMeter 压力測试使用函数和 CSV 文件參数化 json 数据
  4. 没有他,就没有我们现在的WebRTC
  5. CNCC2017中的深度学习与跨媒体智能
  6. 2018-2019-2 20165222《网络对抗技术》Exp9 Web安全基础
  7. hdu2063+hdu1083(最大匹配数)
  8. 找找看XSS漏洞!!!
  9. Atitit.通过null 参数 反射  动态反推方法调用
  10. Spring常用注解整理
  11. 稀疏表示与字典学习大略讲解
  12. hello world!——VS使用教程
  13. 编译器提示old-style parameter declarations
  14. Vue响应式声明渲染机制
  15. 增强现实(AR)、虚拟现实(VR)、混合现实(MR)之间有什么区别?
  16. 世界杯开赛在即,告诉你5个用区块链玩转球赛的秘密 | 内附独家资源
  17. 金弘同创怎么样:拼多多获取奖励金的办法
  18. 【数学建模】基于matlab GUI平行停车模拟仿真【含Matlab源码 1877期】
  19. 繁星课堂oracle,《繁星》课堂实录及点评
  20. 关于pip下载很慢很慢

热门文章

  1. 一个硅谷实习生竟是顶级黑客?网络安全风险多!
  2. Python获取二维数组的行列数
  3. Mac制作win to go后的驱动文件
  4. 引用的账户当前已锁定,且无法登录
  5. 数字水印进阶篇——基于DWT-SVD的数字水印(附matlab代码)
  6. 自媒体到底有多赚钱?首选赛道推荐
  7. Spark RDD 极简教程
  8. Java三大版本及 JVM JDK JRE 及 SDK API
  9. 微信浏览器字体调整 PHP,微信h5禁止微信内置浏览器调整字体大小-爬坑
  10. 机器学习算法优缺点_用于机器学习的优化算法的优缺点