Qt如何提取文件中的中文

一、背景介绍

    在实际项目中,我们会用到需要把批量文件中的中文提取出来,提供给翻译人员,再由它们翻译之后,导入到目标文件中。现在就以一个.xml格式的文件为例,解释如何实现提取方法,以及用到Qt中哪些库。
    提取中文源文件内容如下:

<example type="af">
	<testnode name="我的名字是HelloWord" pos="top" role="0" number="1号">
	</testnode>
</example >

二、方法实现

    提取的方法很简单,用一个正则表达式来判断就可以实现。提取出来的中文条目,用QStringList返回。

QStringList getMatchingList(const QString& filePath, const QStringList& rexList)
{
	QFile _inputFile(filePath);
	if (!_inputFile.open(QIODevice::ReadOnly | QIODevice::Text))
	{
		qDebug() << "Open file " + _inputFile.fileName() + "failed.";
		return QStringList();
	}
	QTextStream _in(&_inputFile);
	//输出文件:存储查找结果
	QFile outputFile("output.txt");
	outputFile.open(QIODevice::WriteOnly);
	QTextStream out(&outputFile);

	_in.setCodec(QTextCodec::codecForName("utf-8"));//必须加,否则含有中文时乱码
	QString txtStr = _in.readAll();
	//如果要区分大小写,就把下面这句话删掉
	//txtStr.toLower();

	QRegExp regExp;
	int pos, result;
	pos = result = 0;	
	//将匹配设置为最小(短)匹配
	regExp.setMinimal(true);
	
	QStringList _matchList;
	for (int i = 0; i < rexList.count(); i++)
	{
		regExp.setPattern(rexList.at(i));
		pos = 0;
		//开始匹配
		while ((pos = regExp.indexIn(txtStr, pos)) != -1)
		{
			QString str = regExp.cap(1);

			QRegularExpression re;
			re.setPattern("[\u4e00-\u9fa5]");
			if (str.contains(re))
			{
				_matchList.append(str);
				out << str << endl;
			}
			pos += regExp.matchedLength();
			result++;
		}
	}

	qDebug() << result << " results" << endl;
	_inputFile.close();
	outputFile.close();
	return _matchList;
}

    其中参数filePath表示导入的文件所在路径,rexList表示正则表达式的集合,比如像xml格式的文档,我们提取的中文,应该是来自属性值,就是双引号里面的值,我们就可以定义这样一个正则表达式:\“(.*)\”,这个正则表达式就表示提取双引号里面的所有内容。

    使用这个函数提取的结果就是:
    我的名字是HelloWord,1号

三、参考资料

  1. QT:利用正则表达式查找文本
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Qt 是一种用于开发跨平台图形用户界面(GUI)应用程序的工具包。而“提取汉化”是指从一个软件应用程序的源代码提取出其中文字符,并对其进行翻译成汉语的过程。 在使用 Python Qt进行汉化时,常用的方法是使用Qt的国际化(QI18n)功能。这个功能可以帮助开发者将软件文本内容翻译成不同的语言,并且可以通过简单的设置,实现国际化的支持。 首先,我们需要准备一个用于翻译的语言文件。这个文件的后缀名为.qm,可以使用Qt提供的程序lrelease将翻译文件(.ts)编译成.qm文件。在这个翻译文件,包含了软件需要翻译的中文字符和对应的汉语翻译。 其次,在Python程序,我们需要使用Qt的翻译函数来实现汉化。可以使用QTranslator类的load方法,将之前准备好的.qm文件加载到程序,从而使程序的界面显示为中文。在翻译完成后,还需对所涉及的界面元素进行更新,以体现汉化的修改。 最后,我们需要设置程序的默认语言,这可以通过QApplication类的installTranslator方法来实现。设定默认语言中文后,用户将能够在打开程序时看到汉化后的界面。 总结来说,使用Python Qt 进行汉化,需要准备翻译文件,加载翻译文件到程序,对界面元素进行更新,并设置程序的默认语言。通过这些步骤,我们可以实现对Python Qt程序的汉化工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值