我用它来分割字符串:
let split = Str.split (Str.regexp_string " ") in
let tokens = split instr in
....
但问题是,例如这里是我要解析的句子:
pop esi
并在拆分后转为(我使用帮助函数打印tokens
列表中的每个项目):
item: popitem: item: item: item: esi
请参阅令牌列表中有三个空格。
我想知道Python中是否有string.split
类似可以用这种方式解析instr
:
item: popitem: esi
有可能吗?
答案 0 :(得分:14)
不要使用Str.regexp_string
,它仅用于匹配固定字符串。
使用Str.split (Str.regexp " +")
答案 1 :(得分:7)
使用Jane Street's Core library,您可以执行以下操作:
let python_split x =
String.split_on_chars ~on:[ ' ' ; '\t' ; '\n' ; '\r' ] x
|> List.filter ~f:(fun x -> x <> "")
;;
答案 2 :(得分:1)
这就是我将线条分成单词的方式:
open Core.Std
let tokenize line = String.split line ~on: ' ' |> List.dedup
注意空格字符周围的单引号。
以下是String.split
的文档:link
答案 3 :(得分:1)
自OCaml 4.04.0起,还有String.split_on_char
,您可以将其与List.filter
结合使用以删除空字符串:
# "pop esi"
|> String.split_on_char ' '
|> List.filter (fun s -> s <> "");;
- : string list = ["pop"; "esi"]
不需要外部库。