在 Common Lisp 中从文本文件读取数组

2023-12-08

我正在尝试从文本文件读取 Lisp 中的数据(实际上是一个数组)。 我尝试使用with-open-file and read-line但无法实现我的目标。我正在寻找的东西相当于做data=load('filename.txt')在 MATLAB 中,这样我就得到一个名为data已将全部信息加载到filename.txt.

文本文件的格式如下

1.0 2.0 3.0 ...
1.5 2.5 3.5 ...
2.0 3.0 4.0 ...
 .....

尺寸也可能有所不同。预先非常感谢。


做到这一点的基本方法是使用with-open-file为了获取输入流,read-line in a loop得到线路,split-sequence(来自同名库)将其拆分为字段,并且parse-number(来自同名库)将字符串转换为数字。所有提到的库都可以从快速口语.

编辑:只是为了让您开始,这是一个未经验证的简单版本:

(defun load-array-from-file (filename)
  (with-open-file (in filename
                      :direction :input)
    (let* ((data-lol (loop :for line := (read-line in nil)
                           :while line
                           :collect (mapcar #'parse-number:parse-number
                                            (cl-ppcre:split "\\s+" line))))
           (rows (length data-lol))
           (columns (length (first data-lol))))
      (make-array (list rows columns)
                  :initial-contents data-lol))))

您应该添加一些检查并考虑如果未满足您的要求,您想要得到什么:

  • 行的长度都相同吗?
  • 所有字段都是有效数字吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Common Lisp 中从文本文件读取数组 的相关文章

  • C++从文件中读取整数并保存到数组中

    我正在制作一个仅从文本文件读取整数的程序 我想创建一个读取整数并将它们存储在数组中的函数 以便稍后可以使用该数组通过冒泡排序对它们进行排序 这是我到目前为止所得到的 但我得到的输出是一些随机的 803234 数字 void read int
  • 使用 UISearchBar 过滤数组

    我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中 问题是 只有当搜索与确切的单词匹配时 才会返回结果 如何更改数组过滤器以在输入时搜索每个字符 let data Mango Grape Berry Orange A
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 需要从数组中删除字符串[重复]

    这个问题在这里已经有答案了 我在 for 循环中有一个数组 如下所示 var arr abc 5 city 2 area 2 max choice 我只需要这样的数字 var arr 5 2 2 有人可以在这里帮忙吗 另一种方法是使用转换后
  • 如何创建没有循环关系的树形表?

    CREATE TABLE TREE node1 id UUID REFERENCES nodes object id NOT NULL node2 id UUID REFERENCES nodes object id NOT NULL CO
  • 使用局部特殊变量

    为了方便原型设计 我依赖于许多全局变量 这些变量在整个代码中大量使用 但现在我想让其中一些成为本地的 但动态的 在本地声明它们是否有任何重大缺点 例如 效率等 special而不是全球 特殊变量不受欢迎的功能包括 缺乏参考透明度 这使得对代
  • 使用静态指针的动态内存分配

    有人可以向我解释一下为什么下面的代码会这样工作吗 这里我已经初始化了outd作为文件中的静态指针code2 c 然后我动态地为其分配内存malloc 从单独文件中的主函数中一次又一次地调用它code1 c 它看起来整个数组以静态方式运行 因
  • 如何循环遍历对象数组并生成键值对?

    我有一个像这样的对象数组 let someObj items id 12 value true id 34 value true id 56 value false 我想将其添加到现有对象中 其中 id 是该对象的键 如下所示 let ob
  • 使用 awk 读取文件并搜索另一个文件

    我正在读取一个文件 每行都有数字 我需要搜索另一个满足这些数字和其他条件的文件 我正在尝试使用 awk 来做到这一点 但遇到了问题 File a txt 1476 1477 1497 现在我需要打印第 12 列包含这些数字的行以及第 3 列
  • 合并 JavaScript 数组中的重复项

    我有一个愚蠢的问题 乍一看似乎很容易解决 但结果却很棘手 我有一个对象数组 每个对象都有两个属性 id 和 value id 2 value 10 id 4 value 3 id 2 value 2 id 1 value 15 我想编写一个
  • 如何在 emacs 中自动回答是或否

    I binded function semantic symref to key C c C r like this global set key kbd C c C r semantic symref everytime I presse
  • 通过传递单个值获取多个索引[重复]

    这个问题在这里已经有答案了 可能的重复 列表索引搜索 https stackoverflow com questions 11292260 list index search 我必须在 int 中获取索引 其中值是相同的 因此我必须在 in
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • php递归合并

    我需要以某种不同的方式合并一些数组 我使用 array merge recursive 然而 有一些事情我需要改变 但我不知道如何改变 这是来自 php net 的引用 但是 如果数组具有相同的数字键 则后面的值 不会覆盖原始值 但会追加
  • 方法的表达式开头非法

    所以我试图打开 关闭 重新打开 读取并将数组转换为一维数组和二维数组 public class Assigntment2Condensed public static void main String args throws IOExcep
  • 用一种方法进行 Ruby 选择和拒绝

    是否有任何内置方法可以结合以下功能Enumerable select 找到该块等于 true 的所有内容 和Enumerable reject 找到该块中所有等于 false 的内容 就像是 good bad list magic meth
  • SBCL初始化文件

    我想知道应该在哪里保存 sbclrc 文件 我尝试将其保存在我的 sbcl 文件夹中 但它似乎不起作用 我使用的是 Windows XP 和 Emacs 版本 23 我正在尝试设置 asdf install 这就是为什么我要修改初始化文件
  • 在 PHP 中使用数组来比较用户名/密码

    我有以下 php 脚本 其中有一个用户名和密码 Username user1 Password pass1 if isset POST submitform Clean up the input values foreach POST as

随机推荐

  • 压平 JavaScript 树,尝试了一些解决方案

    给定这棵树 是否有一种简单的方法可以将其转换为具有以下条件的平面数组 JS ES5 也使用了 jQuery 尊重演示顺序 添加一个 level 属性 显示缩进级别 从 0 开始 root 0 id 1 name Frutta status
  • 使用xamarin studio进行Windows 7桌面应用程序开发

    是否可以使用 Xamarin Studio 不是 Visual Studio 来开发 Windows 7 桌面应用程序 我问的原因是我想将它用于 IOS OS x Android 开发 但我还需要该应用程序在 Windows 7 上运行 是
  • 在Python Flask中显示数据库结果:ValueError:字典更新序列元素#0的长度为6;需要 2 个

    如何使用 python Flask 在 CocoaRestClient 中显示数据库查询的结果 这是代码 import json import sys import datetime import MySQLdb as mdb from f
  • 本地 Jekyll 服务/实时站点差异

    我正在使用主题创建一个 jekyll 博客来托管在我的 github io 帐户上 问题很简单 当我运行 jekyllserve 时 该网站会在本地生成 没有任何问题 但是 当我将其推送到 my profile github io 存储库时
  • Selenium 2:检测链接目标的内容类型

    我正在使用 Selenium 2 Java API 与网页交互 我的问题是 如何检测链接目标的内容类型 基本上 这是背景 在单击链接之前 我想确保响应是 HTML 文件 如果没有 我需要以其他方式处理 假设有一个 PDF 文件的下载链接 应
  • 在 Java 中可视化矢量图形,哪个库?

    我需要可视化一个大的矢量图形 这是一张道路地图 道路只是线条 有图书馆吗 如果该库支持放大 缩小并且易于扩展 那就太好了 例如 实现道路选择或一些不错的鼠标悬停效果 许可证应允许在商业项目中使用 谢谢 菲利普 编辑 有理由不使用 Graph
  • 更改 conda PS1 提示符

    我刚刚安装了新版本的 Conda 22 9 0 我以前的版本用于在 Linux 提示符前面加上激活的 Conda 环境的名称 然而 新版本将整个提示替换为 Conda 环境名称 例如 base 因此 我想自定义提示 我已经使用以下方法完成了
  • 默认 Ruby 未使用 RVM 加载

    不确定此问题是否与最近的 Oh My ZSH 更新有关 但突然间 我的 RVM 默认 Ruby 在打开新的终端窗口时未加载 相反 它加载系统 Ruby 我已经添加了 s HOME rvm scripts rvm HOME rvm scrip
  • 为什么在所有初始订阅者断开连接后 RefCount 不起作用? (还原)

    根据 Lee Campbell 的要求 这是一个后续问题这个原来的 其目的是在我试图解决的用例的背景下提出问题 我有一个WebApiService它封装了原始 Web API 并提供令牌管理 也就是说 它跟踪身份验证令牌 并将其传递给原始
  • std::locale 构造函数在使用 MinGW 编译的程序中抛出异常

    此代码在 MSVC 2022 中运行 并在 MinGW x86 64 w64 mingw32 gcc 12 2 0 中引发运行时错误 include
  • 配置 Notepad++ 在本地主机上运行 php?

    我正在尝试获取选项 运行 gt 使用 Firefox 启动 打开我当前在 Notepad 中查看的文件http 127 0 0 1 8080 currentfile php 但它只是在 Firefox 中打开到当前文件目录 我尝试编辑 No
  • WCF活动宣言

    我发现 WCF 不直接使用事件 而是使用 OneWay 委托调用 但有人可以向我展示一个关于如何执行此操作的简单示例吗 这是我现在的设置 OperationContract IsOneWay true void OnGetMapStoryb
  • 从 IntelliJ 启动 Grails 3 应用程序并启用自动重新加载

    看起来 IntelliJ Ultimate EAP 15 对 Grails 3 的支持还处于早期阶段 如果我做Run gt Debug Grails My App 我可以从 IntelliJ 内部启动应用程序 我可以设置断点并且它按预期工作
  • SimpleDateFormat 解析时忽略月份

    以下代码给出的解析日期为 Wed Jan 13 00 00 00 EST 2010 而不是 2010 年 6 月 13 日星期三 00 00 00 EST 2010 任何想法都非常感激 SimpleDateFormat sf new Sim
  • [SpringBoot]:简单组件无法自动装配 String 类

    我有这个简单的组件类 package jason import org springframework stereotype Component Component public class Messenger private String
  • 转发 C 中可变参数函数的调用

    在C中 是否可以转发可变参数函数的调用 如 int my printf char fmt fprintf stderr Calling printf with fmt s fmt return SOMEHOW INVOKE LIBC PRI
  • 查看子路线时,Ember 隐藏父模板

    我正在使用 Ember 为我的网站制作一个简单的博客 我的路线 Router map function this route home path this route blog function this route post path p
  • 使用 PHP 合并视频文件

    我有两个 mp4 文件 我想合并它们 media1 file get contents SERVER DOCUMENT ROOT dir media1 mp4 media2 file get contents SERVER DOCUMENT
  • webview android kitkat 4.4.2 上的“选择要上传的文件”

    我有一个网络视图 我添加了上传文件的代码 它在 4 3 和 4 2 galaxy s3 上运行良好 但在 4 4 2 上不起作用 如 Galaxy s5 和 lg3 当我单击 选择文件 时 它没有响应并且没有任何反应 这是我的代码 Main
  • 在 Common Lisp 中从文本文件读取数组

    我正在尝试从文本文件读取 Lisp 中的数据 实际上是一个数组 我尝试使用with open file and read line但无法实现我的目标 我正在寻找的东西相当于做data load filename txt 在 MATLAB 中