【问题标题】:matlab, textfilematlab,文本文件
【发布时间】:2011-04-07 21:43:49
【问题描述】:

我有一堆文本文件,其中既有字符串又有数字,但字符串只是在前几行。

我正在尝试编写一个脚本,该脚本进入我的文件夹搜索文件夹中的所有文件并从文件中删除文本并将其余部分按原样写入新的文本文件中。

有人知道吗?

【问题讨论】:

  • 文件内容的样本会有很大帮助,你不觉得吗?

标签: matlab file-io text-files


【解决方案1】:

我不认为这是对 MATLAB 的好用。

我认为你最好在 Python 或 shell 中编写脚本。如果您在 *nix 或 mac 上并且您的文件都在同一个目录中并且都具有文件扩展名 .txt,那么这是您可以在 shell 中使用 tr 的一种方法:

#!/bin/sh
for i in `ls *.txt`
do
cat $i | tr -d "[:alpha:]" > $i.tr.txt
done

跑步。将上面的代码保存为文件,使其可执行(chmod a+x 文件名),然后在包含文本文件的目录中运行它。

【讨论】:

  • 如果您能提供有关文本文件格式的更多详细信息,也会很有帮助。如果它们仅在前 固定数量 行中,您可以使用类似tail 命令来跳过这些行。
  • 好吧,基思,所有文本文件都在 .txt 中,并且看起来完全一样,只有非常小的例外。前四或五行是实际文本。但在那之后就像一个 3 列号,我需要在 matlab 中运行,这就是为什么我想要它在 matlab 中。而且未编辑的文本文件是原始数据文件,但我不知道您所说的第一个固定数字是什么意思
  • 固定数字是指文件之间的字符串行数不会改变。如果相同,您可以将 importdata() 与 nheaderlines 选项一起使用,如下所示:files = dir('data*.txt'); for i = 1 : numel(files) data = importdata(files(i).name,'nheaderlines',4); %do something with the data end
【解决方案2】:

如果字符串行数始终相同,您可以使用带有 'headerlines' 选项的 textread() 跳过这些字符串行,然后将整个文本缓冲区写出。

【讨论】:

  • 那是我的想法,但我不习惯 matlab,我不知道如何使用它。你介意解释一下还是举个例子
猜你喜欢
  • 2015-12-19
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 2014-05-28
相关资源
最近更新 更多