gpt4 book ai didi

list - 在 tcl 中拆分列表后出现杂散字符

转载 作者:行者123 更新时间:2023-12-02 05:18:40 25 4
gpt4 key购买 nike

我经常在我的列表中得到像“{\\{”这样的字符,这是由空格连接或拆分的简单列表的结果。

只是寻找这些字符背后的原因。

我知道等式中可以忽略后跟特殊符号的退格键,但是\\是什么意思?

最佳答案

很久以前,Tcl 中的所有内容都在内部存储为字符串,包括列表。选择空格来分隔列表元素,以便以后可以将它们彼此区分开...

set planets [list "mercury" "venus" "march"] ;# stored in planets as "mercury venus march"
puts [lindex $planets 2] ;# lindex treats it's first (string) argument as a list, and splits on whitespace to find the third element

...但是需要一些方法来转义/引用空白字符,以便能够将这些存储在实际的列表元素中。 {} 用于此...

set programs [list "hello world" "primes"] ;# stored in programs as "{hello world} primes"

...现在您需要能够转义 {}

在现代 Tcl 版本中,列表的内部存储效率更高,但从脚本编写者的角度来看,它仍然以这种方式存储是为了向后兼容,也许出于其他原因。因此,当您将列表用作字符串时,您会得到该列表的字符串表示形式,其中包含空格、大括号和反斜杠。

您问题的简单解决方案是永远不要将列表视为字符串,即不要将列表作为参数发送到命令需要字符串的地方。然后你永远不会看到任何特殊的转义序列,除非你真的把它们放在一个元素中。

puts $mylist ;# bad unless used for debugging
puts [join $mylist] ;# good

也不要将字符串视为列表:

set mystring "word1 {hello word3"
puts [lindex $mystring 1] ;# will throw an error
puts [lindex [split $mystring] 1] ;# good

关于list - 在 tcl 中拆分列表后出现杂散字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com