matlab - 使用值中的空格逐行导入 ASCII 制表符分隔
问题描述
Matlab 没有正确拆分以制表符分隔的行,单词之间有空格。我怎样才能让它发挥作用?
例如,假设我有一个文件,其中包含我要提取的这两行,第一行是标题行,第二行是一行数据:
#DATA_NAME field1 field2 field3
DATA_NAME 14 A String 34.1
(分隔符是制表符,但我在这里显示多个空格)
我编写了一个自定义解析器,它应该生成一个包含以下内容的表:
field1 field2 field3
______ ______ ______
14 A String 34.1
我看到的是这样的:
field1 field2 field3
______ ______ ______
14 A String
我有一个使用split()
逐行函数的解决方案fgetl
,如果条目中没有空格,它就可以工作。正在做:
splitted = split(line, '\t')
似乎不起作用。我做了一些检查,分隔符不 == '\t'...
(我必须使用我的自定义解析器,因为一个文件中有很多不同类型的数据,每一个都有不同的列数和不同的标题。)
解决方案
使用char(09)
而不是'\t'
我无法准确列出它们,但我注意到一些 Matlab 字符串解析器识别'\t'
为正确的TAB字符,但其他一些不识别它并将其视为 2 个单独的字符'\'
和't'
.
例子:
>> double('\t')
ans =
92 116
即使textscan
在过去使用时,这也给我带来了麻烦,所以现在除了fprintf
我知道它可以工作的地方,在其他地方我总是使用 ascii 代码09
作为制表符,而不是简写符号'\t'
。
例如:
tabc = char(09) ;
C= textscan( s , '%s' , 'delimiter',tabc ) ; % or in any other function using 'delimiters'
并演示第一个示例:
>> double('\t')
ans =
92 116
>> double(tabc)
ans =
9
有时它没有区别,但如果您在处理TAB字符时遇到问题,使用确切的 ascii 代码将使您不必怀疑它是否被正确解释......
推荐阅读
- c++ - 有没有办法将整数变量数组存储到另一个数组的单个元素中?
- mongodb - 带有 OR 条件的 MongoDB Atlas 搜索过滤器范围
- javascript - 通过 array_to_json 检索的 Postgresql 数组需要转换回 Javascript 中的对象数组
- r - 将宏添加到刻面标签中的字母
- android - 为什么 View 上的 `onDraw()` 方法接收可为空的画布
- python - 如何在 Python 中使用以太坊私钥签署消息?
- flutter - 如何在 Flutter 中使用本地通知打开某个页面?(不是 FCM)
- c++ - 如何为模板实例使用容器
- python - /api/questions/ 'list' 对象的 TypeError 不可调用
- r - 在ggplotly中保留来自ggplot的网格线