`

删除citeulike导出的bib文件中的中文字符,使之能在WinEdt中读取

阅读更多
在使用Citeulikehttp://citeulike.org/导出bib文件时,发现导出的文件在WinEdt中无法被识别。。。也就是\cite{}后不弹出提示
后来发现是有中文文献的缘故。。。。干脆写了个小程序去除中文字符。
顺带去除citeulike开头的行。


程序功能:
  • 删除当前文件夹下的bib文件中以"citeulike" 开头(不含空格)的行
  • 非ASCII字符的行。
  • 原文件名称加.origin
  • 生成的文件与原文件同名

编译好的Jar文件见附件

package lc.bibtex;

import java.io.*;

import javax.swing.JOptionPane;

public class DealWithCiteulikeBibFile {
	//删除当前文件夹下的bib文件中以"citeulike" 开头(不含空格)的行,以及非ASCII字符的行。
	//原文件名称加.origin;生成的文件与原文件同名
	public static void main(String[] args) throws IOException {

		//找到.bib文件
		File[] bibFiles = new File(".").listFiles(new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				return pathname.isFile() && pathname.getName().endsWith(".bib");
			}
		});

		String[] toDelete = { "citeulike" };//删除以 "citeulike" 开头的行
		boolean deleteNotASCII = true;//删除含非ASCII字符的行,否则ctex读取错误。。。。
		boolean deleteOriginFileIfNoChange = true;//如果生成的文件与原文件相同,则删除原文件
		for (File f : bibFiles) {
			File bak = new File(f.getCanonicalPath() + ".origin");
			if (bak.exists())
				bak.delete();
			boolean b = f.renameTo(bak);//现在备份文件为原文件了!!

			if (!b) {
				JOptionPane.showMessageDialog(null, "文件 " + f.getName()
						+ " 或文件 " + bak.getName() + "可能正被其他程序访问!");
				continue;
			}
			deleteLinesNotASCII_or_StartWith(bak, f, toDelete, deleteNotASCII,
					deleteOriginFileIfNoChange);
		}

	}

	/**
	 * 删除除空格外以toDelete中字符串开头的单词(可选),以及含有非ASCII字符的行(可选)
	 * 
	 * @param originFile
	 *            原文件
	 * @param newFileName
	 *            输出文件
	 * @param toDelete
	 *            删除除空格外以toDelete中字符串开头的单词,toDelete可为null,视为不选该项
	 * @param deleteNotASCII
	 *            是否删除含非ASCII字符的行
	 * @param deleteOriginFileIfNoChange
	 *            当新文件和原文件相同时,是否删除原文件
	 * @throws IOException
	 */
	public static void deleteLinesNotASCII_or_StartWith(File originFile,
			File newFile, String[] toDelete, boolean deleteNotASCII,
			boolean deleteOriginFileIfNoChange) throws IOException {
		BufferedReader bf = new BufferedReader(new FileReader(originFile));
		PrintWriter writer = new PrintWriter(newFile);
		boolean hasChanged = false;
		loop: while (bf.ready()) {
			String line = bf.readLine();
			String lineTrim = line.trim();

			if (toDelete != null)
				for (int i = 0; i < toDelete.length; i++) {//删除除空格外以toDelete中字符串开头的单词
					if (lineTrim.startsWith(toDelete[i])) {
						hasChanged = true;
						continue loop;
					}
				}
			for (int i = 0; i < lineTrim.length(); i++) {//删除该行中含有非ASCII字符的行
				if (lineTrim.charAt(i) > 127) {
					hasChanged = true;
					continue loop;
				}
			}
			writer.println(line);
		}
		bf.close();
		writer.close();
		if (!hasChanged && deleteOriginFileIfNoChange)
			originFile.delete();
	}

}
分享到:
评论

相关推荐

    Python库 | citeulike_api-0.1.3dev.tar.gz

    在实际应用中,`citeulike_api`可能被用于科研项目的文献管理工具,学者的个人资料维护,或者是研究团队内部的文献共享平台。配合Python的其他库,如Pandas用于数据分析,Matplotlib或Seaborn用于可视化,可以构建出...

    PyPI 官网下载 | citeulike_api-0.1.1dev.tar.gz

    标题中的"PyPI 官网下载 | citeulike_api-0.1.1dev.tar.gz"指的是这个资源是在Python Package Index (PyPI)官方网站上可以找到的,它是一个名为`citeulike_api`的Python库的版本0.1.1dev的压缩包。PyPI是Python...

    推荐系统123

    【推荐系统123】是关于推荐系统设计与实现的专题,主要涵盖了推荐系统的核心概念、算法以及在实际应用中的工具和技术。在这个专题中,我们将会深入探讨如何构建一个有效的推荐系统,帮助用户发现他们可能感兴趣的...

    Mendeley教程

    - **Zotero和CiteULike整合**:Mendeley支持与Zotero、CiteULike等其他文献管理软件的整合,实现文献的共享与同步。 综上所述,Mendeley是一款功能强大且易于使用的文献管理工具,无论是对于学术研究人员还是普通...

    第五章-参考文献管理软件.pptx

    参考文献管理软件 ...* 将已经保存在电脑中的大量题录文件导入NoteExpress * 将数据库检索结果保存成文件或直接粘贴在剪贴板导入NoteExpress * 选择正确的过滤器,将这些题录信息经过“过滤”后置入NoteExpress

    云计算下协作标注系统中用户标注机制探讨.pdf

    在协作标注系统中,用户标注机制是系统的一项核心功能。标注系统允许用户通过自己的理解和喜好,对互联网资源,如网页、图片、视频等进行标注,便于组织和分享。标注的结果就是标签(Tags),它们是标注系统的最小...

    2017-Deep Matrix Factorization Models for Recommender Systems.pdf

    深度矩阵分解模型在推荐系统中的应用 推荐系统(Recommender Systems,简称RS)是信息爆炸时代解决信息过载问题的有效工具,它帮助确定哪些信息提供给个别消费者,使在线用户能够快速找到适合自己需求的个性化信息...

    基于分布式图计算的学术论文推荐算法.pdf

    在学术领域中,推荐算法同样发挥着重要作用,尤其是在文献管理网站中,如CiteULike、ResearchGate等。尽管如此,传统推荐技术直接应用于学术论文推荐领域仍然存在许多挑战,因为学术论文推荐实际上属于一类特殊的...

    网络演化文献

    这种类型的网络在电子商务服务中扮演着关键角色。 ### 知识点二:在线二部网络的研究背景 **摘要解析:** #### 研究背景与动机 近年来,随着互联网技术的发展,人们对于理解在线二部网络(即由两类节点组成,每...

    网络学术信息资源的获取途径

    这些工具能够在不同搜索引擎中快速查找信息,帮助用户节省时间。 学术搜索工具专注于搜索学术论文、学术期刊、技术报告等高质量的学术资源。Google Scholar、Microsoft Academic Search和Scirus等都是知名的学术...

    通过启发式数据融合的协作标记系统中的项目推荐

    协作标记系统中的项目推荐是指通过用户在互联网上对信息资源进行标记的方式,利用用户群体的智慧和经验来推荐相关的项目或信息资源。随着网络信息量的爆炸性增长,用户面对信息过载的问题愈发凸显,因此推荐系统成为...

    基于内核的标签推荐协作主题回归

    在一些著名的网站中,例如CiteULike使用标签来对文章进行分类,而Flickr则允许用户使用标签来标记和组织照片。虽然这些标签对于帮助用户找到资源是很有用的,但不同的用户可能会给同一资源贴上不同的标签,这会导致...

    matlab滑动条代码-CollaborativeDeepLearning-TensorFlow:用于``推荐系统的协作深度学习''的官方非官

    在Matlab下运行lib / mainEvaluate.m 其他材质 有关该作品的更多详细信息和一些直接扩展,请参见。 完整CDL的Matlab版本:。 简化CDL的MXNet版本:。 数据: 。 幻灯片:和。 其他实现(第三方): 经过 。 经过 。 ...

    The Recurrence Dynamics of Social Tagging

    社交标记的重现动态是理解和优化Web2.0平台中标签使用的关键因素之一。通过对RSDC08数据集的深入分析,不仅揭示了标签重现的基本规律,也为进一步开发有效的标签推荐算法提供了宝贵的实证依据。未来的研究可以从更多...

    用于网络用户行为聚类分析的簇标签自动生成方法

    应用潜在因子模型和矩阵分解方法对原始网络用户行为数据补充缺失值,根据网络用户行为数据的属性特征进行用户行为聚类并在聚类过程中增加行为特征,同时利用行为特征信息产生簇标签以提高网络用户行为的聚类准确性。...

Global site tag (gtag.js) - Google Analytics