Dyalog APL在Win10下使用⎕NGET读取txt文件结果异常问题
Dyalog APL 读取TXT按行拆分问题解决
问题原因
你对⎕NGET的参数规则和返回值结构理解存在偏差,是运行结果不符合预期的核心原因:
⎕NGET标准调用的返回值为3元素向量,结构为(文件内容 编码格式 换行符类型),你直接将完整返回值赋值给input变量,拿到的是包含三类信息的三元数组,不是纯文件内容。- 你传入的第二个参数
1是编码指定参数(对应UTF-16编码),并不是控制按行拆分的开关,⎕NGET本身默认不会自动按行拆分内容,只会返回整个文件的单一字符向量。 - 你后续调用
⍕input[1]的操作中,input[1]本身已经是未拆分的整段字符向量,⍕格式化操作只会打平内容,不会自动做行拆分。
可行解决方案
两种常用方式实现你要的「每一行存储为数组一个元素」的需求:
- 方案1:
⎕NGET读取后手动按换行符拆分
⍝ 先拆解返回值拿到纯内容、换行符标识 content encoding newline ← ⎕NGET 'input.txt' 1 ⍝ 用换行符作为分隔符拆分内容为行向量 lines ← newline (≠⊆⊢) content
- 方案2:直接用
⎕CSV按行读取,更适配你的场景
⍝ 空字符作为分隔符、0代表保留原始字符类型不做自动转换,直接返回每行的字符向量 lines ← ⊃⎕CSV 'input.txt' '' 0
内容的提问来源于stack exchange,提问作者erbsenhexler
相关产品推荐
相关产品推荐

