scala - Scala 文件行映射
问题描述
我目前正在打开我的文件并使用 .getLines 从文件中检索每一行,其中包含一个单词及其由两个空格分隔的语音发音,我对如何在 Scala 中映射单词及其发音感到困惑因为我对这门语言还很陌生。我以前虽然使用拆分并将单词及其声音分成不同的行,但是,我迷路了
目前我开始
def words(filename: String, word: String): Unit = {
val file = Source.fromFile(filename).getLines().drop(56)
for(x <- file){
}
}
前任:
ARTI AA1 R T IY2
AASE AA1 S
ABAIR AH0 B EH1 R
AB AE1 B
结果:
Map("AARTI -> "AA1 R T IY2","AASE" -> "AA1 S", "ABAIR" -> " AH0 B EH1 R")
解决方案
- 迭代每一行
- 除以 2 个空格
" "
- 创建一个 (a -> b) 的元组
- 兑换
Array[Tuple[A, B]] => Map[A, B]
例子,
val data =
"""
ARTI AA1 R T IY2
AASE AA1 S
ABAIR AH0 B EH1 R
AB AE1 B
""".stripMargin
val lines: Array[String] = data.split("\n").filter(_.trim.nonEmpty)
// if you are reading from file
// val lines = Source.fromFile("src/test/resources/my_filename.txt").getLines()
val res: Array[Tuple2[String, String]] = lines.map { line =>
line.split(" ") match { case Array(a, b) => a -> b }
}
println(res.toMap)
输出:
Map(ARTI -> AA1 R T IY2, AASE -> AA1 S, ABAIR -> AH0 B EH1 R, AB -> AE1 B)
运行示例 - https://scastie.scala-lang.org/prayagupd/jBCnEhUPQJCMPKP9TXlgWA
推荐阅读
- mongodb - mongoose.connect() url 参数必须是字符串类型
- linux-kernel - 无论引导参数 console= 的值如何,如何让我的模块中的 printk 在串行控制台上显示消息
- itfoxtec-identity-saml2 - SAML2 令牌重放验证
- mysql - 需要帮助将列添加到子查询表
- python - 使用 smtplib 和 email.message.EmailMessage 发送电子邮件时未显示徽标/图像
- spring-boot - 在 Intellij-idea 中使用 gradle“compileOnly”项目类型依赖运行/调试应用程序
- xml - XSLT for-each 在每次迭代之前插入文本
- c++ - C++ Array 类可以作为可变大小的参数传递吗?
- python - 我可以在不使用睡眠的情况下每秒感知.set_pixels 吗?
- c - 此解决方案不接受任何浮点数