使用 cut 拆分字符串列表 - KDB
Splitting a list of strings using cut - KDB
对于以下列表:
q)a:("ua@1100@1";"sba@2220@2";"r@4444@a")
我想要以下输出:
("1100@1";"2220@2";"4444@a")
?
给出 @
的第一个索引
q)(a?\:"@")
2 3 1`
但是使用 cut
没有得到想要的结果:
q)(a?\:"@")cut'a
(("ua";"@1";"10";"0@";"1");("sba";"@22";"20@";"2");("r";"@";"4";"4";"4";"4";"@";"a"))`
当 cut
的左参数是 atom 时,cut
的行为不同于 _
。
q)2 cut 2 3 4 5 6
(2 3;4 5;,6)
q)2 _ 2 3 4 5 6
4 5 6
使用_
剪切字符串
q)(1+a?\:"@")_'a
("1100@1";"2220@2";"4444@a")
或
q)"@"sv/:1_/:"@" vs/:a
("1100@1";"2220@2";"4444@a")
您还可以解析数据而不是从每个字符串中删除字符。
如果你的数据集很大,它会更有效率。
q)("J@*"0:/:a)[;1]
"1100@1"
"2220@2"
"4444@a"
请注意,我已将 'key' 设置为 'J',这将导致您的示例中出现空值,但无论如何您只关心这些值。
如果能把字符串连起来就更好了
q)last "J@;"0:";" sv a
"1100@1"
"2220@2"
"4444@a"
HTH,
肖恩
对于以下列表:
q)a:("ua@1100@1";"sba@2220@2";"r@4444@a")
我想要以下输出:
("1100@1";"2220@2";"4444@a")
?
给出 @
q)(a?\:"@")
2 3 1`
但是使用 cut
没有得到想要的结果:
q)(a?\:"@")cut'a
(("ua";"@1";"10";"0@";"1");("sba";"@22";"20@";"2");("r";"@";"4";"4";"4";"4";"@";"a"))`
当 cut
的左参数是 atom 时,cut
的行为不同于 _
。
q)2 cut 2 3 4 5 6
(2 3;4 5;,6)
q)2 _ 2 3 4 5 6
4 5 6
使用_
剪切字符串
q)(1+a?\:"@")_'a
("1100@1";"2220@2";"4444@a")
或
q)"@"sv/:1_/:"@" vs/:a
("1100@1";"2220@2";"4444@a")
您还可以解析数据而不是从每个字符串中删除字符。 如果你的数据集很大,它会更有效率。
q)("J@*"0:/:a)[;1]
"1100@1"
"2220@2"
"4444@a"
请注意,我已将 'key' 设置为 'J',这将导致您的示例中出现空值,但无论如何您只关心这些值。
如果能把字符串连起来就更好了
q)last "J@;"0:";" sv a
"1100@1"
"2220@2"
"4444@a"
HTH, 肖恩