码迷,mamicode.com
首页 > 编程语言 > 详细

Python文本处理和Java/C比对

时间:2015-04-04 09:12:07      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:python文本处理   python文本与javac++   

一:起因

(1)态度和思想的转变很重要:要说起学习Python的原因,也够曲折的 —— 很早之前就听说了Python 以及 Perl语言,一直有学习的打算和冲动;最后学习Python是由于学习《机器学习》,和国外的教学视频里面那些洋教授们,以及国外关于机器学习的API都是用到的Python语言,自己初试牛刀一把,感觉效率就是高,慢慢的观念就转变了。

(2)态度和思想的转变很重要:学习一门新技术或者语言,跟人们认识事物的规律是一样一样 —— 刚刚接触新鲜事物时,第一反应排斥、反对(哪里都感觉别扭);克服忍耐几天之后(也可能几周之后也再没有接触  ps:放一边,个把月后才学习),再之后会会有一段蜜月期(感觉效率啥的非常高,非常好 ps:认识不够),开始怀疑以前学习的语言有多么的丑陋与愚笨,开始抵触原来的学习所得,甚至开始怀疑人生(ps:也许会有的);蜜月期一过,自己把新知识的基本知识学的差不多了,开始接触高级应用,但是由于对高级复杂的应用API不是很了解,总是出这样或那样莫名其妙的错误,又开始怀疑人生了……

(3)避免上述怪状的方法,就是广交益友,特别是技术大牛 —— 当你学习一门新技术时,有大牛给你指点,肯定会给你带来不少乐趣,还收获了友谊;关注技术大牛的技术blog(CSDN 或 Github)

(4)我就是这样开始了,我的短暂的学习Python之旅。

二:文本处理比较

(1)Java语言:

  /*
     * @function:读取文件内容
     * @input:输入文件名
     * @output:文件的全部内容
     */
    public static String readFile(String file) throws FileNotFoundException, IOException {
        //StringBuffer sb = new StringBuffer();
		FileInputStream fileInputStream = new FileInputStream(file)
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, "gbk"));
        String line = bufferedReader.readLine();
        while (line != null) {
			String [] words = line.split(regex);// 或者replace等等
			for(word in words){
				System.out.println(word);
			}
            //sb.append(line).append("\r\n");// windows 系统中的换行符
            line = bufferedReader.readLine();
        }
        bufferedReader.close();
        return sb.toString();// 牛逼 把一篇文章存在这里面的,这是不行的
    }

(2)C++语言:

C++语言实现
C++中没有实现split功能的函数,下面用C++ STL中的一些函数模拟实现split功能。
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;

/*
@in, src: 待分割的字符串
@in, delim: 分隔符字符串
@in_out, dest: 保存分割后的每个字符串
*/
void split(const string& src, const string& delim, vector<string>& dest)
{
	string str = src;
	string::size_type start = 0, index;
	string substr;

	index = str.find_first_of(delim, start);	//在str中查找(起始:start) delim的任意字符的第一次出现的位置
	while(index != string::npos)
	{
		substr = str.substr(start, index-start);
		dest.push_back(substr);
		start = str.find_first_not_of(delim, index);	//在str中查找(起始:index) 第一个不属于delim的字符出现的位置
		if(start == string::npos) return;

		index = str.find_first_of(delim, start);
	}
}


int main()
{
	ifstream infile("test.txt", ios::in);
	vector<string> results;
	string word;
	string delim(" ");
	string textline;
	if(infile.good())
	{
		while(!infile.fail())
		{
			getline(infile, textline);
			split(textline, delim, results);
		}
	}
	infile.close();

	vector<string>::iterator iter = results.begin();
	while(iter != results.end())
	{
		cout<<*iter++<<endl;
	}

	return 0;
}

(3)Python语言:

在Python中有专门的函数split()对字符串进行分割,实现较为简单
myfile = open('test.txt', 'r')
allWords = []
line = myfile.readline()
while line:
	list = line.split(' ')
	for word in list:
		if word[-1]=='\n':
			allWords.append(word[:-1])	#去掉行末的'\n'
		else:
			allWords.append(word)
	line = myfile.readline()
myfile.close()	
print allWords

(4)总结:相比较而言,(抛开运行效率不说),开发效率比较好的是Python,其次是Java,最后是c++,(但是一旦c++这些方法提前包装好了,也是很不错的)。

Python文本处理和Java/C比对

标签:python文本处理   python文本与javac++   

原文地址:http://blog.csdn.net/u010700335/article/details/44870743

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!