在 Scala 的嵌套 for 循环中更新字符串变量
Updating a string variable from within nested for loop in Scala
我有一个 Dataframe,我正在尝试将其转换为 html table 语法作为 Scala 中的字符串:
sample_df:
其类型为 DataFrame = Dataset[Row]
|Name|Country|Occupation|Years_Experience|
|Bob |USA | Engineer | 5 |
|John|CANADA | Sales | 3 |
我已经转换了 html headers 但是需要在字符串变量中包含 html 行和值,如下所示
html_string:
<tr>
<td>Bob</td>
<td>USA</td>
<td>Engineer</td>
<td>5</td>
</tr>
<tr>
<td>John</td>
<td>CANADA</td>
<td>Sales</td>
<td>3</td>
</tr>
然而,当我尝试下面的嵌套循环方法时,html_string 变量没有更新为我上面所期望的。结果是一片空白。我做错了什么?
代码尝试:
var html_string = """"""
for (i <- sample_df) {
html_string = html_string + "<tr>"
for (g <- i.toSeq) {
html_string = html_string + "<td>" + g + "</td>"
}
html_string = html_string + "</tr>"
}
println(html_string)
谢谢!
不确定您在此上下文中所说的“数据帧”是什么意思(您不能像这样迭代 spark 数据帧),但假设您谈论的是正常序列,则此 works for me.
话虽如此,这在 Scala 中是一种非常糟糕的做法。编写 Scala 代码时的基本经验法则是 永远不要使用可变变量 除非。您确切地知道为什么在特定情况下必须(这种情况极为罕见)。
val html_string = df
.map { _.mkString("<td>", "</td><td>", "</td>" }
.mkString("<tr>", "</tr><tr>", "</tr>")
我有一个 Dataframe,我正在尝试将其转换为 html table 语法作为 Scala 中的字符串:
sample_df: 其类型为 DataFrame = Dataset[Row]
|Name|Country|Occupation|Years_Experience|
|Bob |USA | Engineer | 5 |
|John|CANADA | Sales | 3 |
我已经转换了 html headers 但是需要在字符串变量中包含 html 行和值,如下所示 html_string:
<tr>
<td>Bob</td>
<td>USA</td>
<td>Engineer</td>
<td>5</td>
</tr>
<tr>
<td>John</td>
<td>CANADA</td>
<td>Sales</td>
<td>3</td>
</tr>
然而,当我尝试下面的嵌套循环方法时,html_string 变量没有更新为我上面所期望的。结果是一片空白。我做错了什么?
代码尝试:
var html_string = """"""
for (i <- sample_df) {
html_string = html_string + "<tr>"
for (g <- i.toSeq) {
html_string = html_string + "<td>" + g + "</td>"
}
html_string = html_string + "</tr>"
}
println(html_string)
谢谢!
不确定您在此上下文中所说的“数据帧”是什么意思(您不能像这样迭代 spark 数据帧),但假设您谈论的是正常序列,则此 works for me.
话虽如此,这在 Scala 中是一种非常糟糕的做法。编写 Scala 代码时的基本经验法则是 永远不要使用可变变量 除非。您确切地知道为什么在特定情况下必须(这种情况极为罕见)。
val html_string = df
.map { _.mkString("<td>", "</td><td>", "</td>" }
.mkString("<tr>", "</tr><tr>", "</tr>")