字符串分割#

分割

函数

std::unique_ptr<table> partition(strings_column_view const &input, string_scalar const &delimiter = string_scalar(""), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过使用指定的分隔符分割每个字符串,返回一组3列。

输出列中的行数将与输入列相同。第一列将包含分割后每个字符串的第一个标记。第二列将包含分隔符。第三列将包含分隔符后每个字符串的剩余字符。

任何空字符串条目都将返回相应的空输出列。

Example:
s = ["ab_cd","def_g_h"]
r = partition(s,"_")
r[0] is ["ab","def"]
r[1] is ["_","_"]
r[2] is ["cd","g_h"]
参数:
  • input – 此操作的字符串实例

  • delimiter – 指示在每个字符串中分割位置的 UTF-8 编码字符串。默认空字符串表示按空格分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回表设备内存的设备内存资源

返回:

新的字符串列组成的表

std::unique_ptr<table> rpartition(strings_column_view const &input, string_scalar const &delimiter = string_scalar(""), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过从每个字符串末尾开始使用指定的分隔符分割每个字符串,返回一组3列。

输出列中的行数将与输入列相同。第一列将包含找到最后一个分隔符之前每个字符串的字符。第二列将包含分隔符。第三列将包含分隔符后每个字符串的剩余字符。

任何空字符串条目都将返回相应的空输出列。

Example:
s = ["ab_cd","def_g_h"]
r = rpartition(s,"_")
r[0] is ["ab","def_g"]
r[1] is ["_","_"]
r[2] is ["cd","h"]
参数:
  • input – 此操作的字符串实例

  • delimiter – 指示在每个字符串中分割位置的 UTF-8 编码字符串。默认空字符串表示按空格分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回表设备内存的设备内存资源

返回:

新的字符串列

std::unique_ptr<table> split(strings_column_view const &strings_column, string_scalar const &delimiter = string_scalar(""), size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过使用指定的分隔符分割每个字符串,返回一个列列表。

输出列中的行数将与输入列相同。第一列将包含分割后每个字符串的第一个标记。后续列包含下一个标记字符串。对于分割结果已耗尽的行,会添加空条目。总列数将等于输入列中任何字符串上遇到的最大分割次数。

任何空字符串条目都将返回相应的空输出列。

参数:
  • strings_column – 此操作的字符串实例

  • delimiter – 指示每个字符串中分割点的 UTF-8 编码字符串;默认空字符串表示按空格分割。

  • maxsplit – 要执行的最大分割次数;默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回表设备内存的设备内存资源

返回:

新的字符串列组成的表

std::unique_ptr<table> rsplit(strings_column_view const &strings_column, string_scalar const &delimiter = string_scalar(""), size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过从每个字符串末尾开始使用指定的分隔符分割每个字符串,返回一个列列表。

输出列中的行数将与输入列相同。第一列将包含分割后每个字符串中遇到的第一个标记。后续列包含下一个标记字符串。对于分割结果已耗尽的行,会添加空条目。总列数将等于输入列中任何字符串上遇到的最大分割次数。

任何空字符串条目都将返回相应的空输出列。

参数:
  • strings_column – 此操作的字符串实例

  • delimiter – 指示每个字符串中分割点的 UTF-8 编码字符串;默认空字符串表示按空格分割。

  • maxsplit – 要执行的最大分割次数;默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回表设备内存的设备内存资源

返回:

新的字符串列。

std::unique_ptr<column> split_record(strings_column_view const &strings, string_scalar const &delimiter = string_scalar(""), size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将单个字符串元素分割成字符串列表。

每个元素生成一个字符串数组,存储在输出列表列中。

输出列中的元素数量将与输入列中的元素数量相同。每个单独的列表项将包含该行的新字符串。每行中产生的字符串数量可以从 0 到 maxsplit + 1 不等。

在每个字符串中从头到尾搜索 delimiter,当达到 maxsplit 或字符串末尾时停止分割。

如果分隔符不是空格并且与另一个分隔符相邻,则该分割位置会产生一个空字符串。同样,非空格分隔符如果在字符串的开头或结尾出现,也会产生一个空字符串。

s = ["a_bc_def_g", "a__bc", "_ab_cd", "ab_cd_"]
s1 = split_record(s, "_")
s1 is a lists column of strings:
    [ ["a", "bc", "def", "g"],
      ["a", "", "bc"],
      ["", "ab", "cd"],
      ["ab", "cd", ""] ]
s2 = split_record(s, "_", 1)
s2 is a lists column of strings:
    [ ["a", "bc_def_g"],
      ["a", "_bc"],
      ["", "ab_cd"],
      ["ab", "cd_"] ]

空格分隔符不会产生空字符串。

s = ["a bc def", "a  bc", " ab cd", "ab cd "]
s1 = split_record(s, "")
s1 is a lists column of strings:
    [ ["a", "bc", "def"],
      ["a", "bc"],
      ["ab", "cd"],
      ["ab", "cd"] ]
s2 = split_record(s, "", 1)
s2 is a lists column of strings:
    [ ["a", "bc def"],
      ["a", "bc"],
      ["ab", "cd"],
      ["ab", "cd "] ]

空字符串元素将导致该行对应的列表项为空。

抛出:

cudf::logic_error – 如果 delimiter 无效。

参数:
  • strings – 要分割的字符串元素列

  • delimiter – 用于识别每个字符串中分割点的字符串;默认空字符串表示按空格分割。

  • maxsplit – 要执行的最大分割次数;默认 -1 表示在每个字符串上进行所有可能的分割

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列表列;列表列的每一行都包含输入列中单个行元素的分割结果。

std::unique_ptr<column> rsplit_record(strings_column_view const &strings, string_scalar const &delimiter = string_scalar(""), size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将单个字符串元素分割成字符串列表,从每个字符串的末尾开始。

每个元素生成一个字符串数组,存储在输出列表列中。

输出列中的元素数量将与输入列中的元素数量相同。每个单独的列表项将包含该行的新字符串。每行中产生的字符串数量可以从 0 到 maxsplit + 1 不等。

在每个字符串中从尾到头搜索 delimiter,当达到 maxsplit 或字符串开头时停止分割。

如果分隔符不是空格并且与另一个分隔符相邻,则该分割位置会产生一个空字符串。同样,非空格分隔符如果在字符串的开头或结尾出现,也会产生一个空字符串。

注意,rsplit_recordsplit_record 在默认 maxsplit 值下产生等效结果。

s = ["a_bc_def_g", "a__bc", "_ab_cd", "ab_cd_"]
s1 = rsplit_record(s, "_")
s1 is a lists column of strings:
    [ ["a", "bc", "def", "g"],
      ["a", "", "bc"],
      ["", "ab", "cd"],
      ["ab", "cd", ""] ]
s2 = rsplit_record(s, "_", 1)
s2 is a lists column of strings:
    [ ["a_bc_def", "g"],
      ["a_", "bc"],
      ["_ab", "cd"],
      ["ab_cd", ""] ]

空格分隔符不会产生空字符串。

s = ["a bc def", "a  bc", " ab cd", "ab cd "]
s1 = rsplit_record(s, "")
s1 is a lists column of strings:
    [ ["a", "bc", "def"],
      ["a", "bc"],
      ["ab", "cd"],
      ["ab", "cd"] ]
s2 = rsplit_record(s, "", 1)
s2 is a lists column of strings:
    [ ["a bc", "def"],
      ["a", "bc"],
      [" ab", "cd"],
      ["ab", "cd"] ]

空字符串元素将导致该行对应的列表项为空。

抛出:

cudf::logic_error – 如果 delimiter 无效。

参数:
  • strings – 要分割的字符串元素列

  • delimiter – 用于识别每个字符串中分割点的字符串;默认空字符串表示按空格分割。

  • maxsplit – 要执行的最大分割次数;默认 -1 表示在每个字符串上进行所有可能的分割

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列表列;列表列的每一行都包含输入列中单个行元素的分割结果。

std::unique_ptr<table> split_re(strings_column_view const &input, regex_program const &prog, size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用 regex_program 的模式将字符串元素分割成字符串列表列,以分隔每个字符串。

每个元素生成一个字符串向量,存储在输出表的相应行中 — table[col,row] = token[col] of strings[row],其中 token 是分隔符之间的子字符串。

输出表中的行数将与任何输入行中找到的标记数量相同。

使用 pattern 来识别字符串中的分隔符,当达到 maxsplit 或字符串末尾时停止分割。

空输入字符串将在第一列的相应行中产生一个相应的空字符串。空行将产生输出表中相应的空行。

忽略 regex_program 的 regex_flags。

s = ["a_bc def_g", "a__bc", "_ab cd", "ab_cd "]
p1 = regex_program::create("[_ ]")
s1 = split_re(s, p1)
s1 is a table of strings columns:
    [ ["a", "a", "", "ab"],
      ["bc", "", "ab", "cd"],
      ["def", "bc", "cd", ""],
      ["g", null, null, null] ]
p2 = regex_program::create("[ _]")
s2 = split_re(s, p2, 1)
s2 is a table of strings columns:
    [ ["a", "a", "", "ab"],
      ["bc def_g", "_bc", "ab cd", "cd "] ]
抛出:

cudf::logic_error – 如果 pattern 为空。

参数:
  • input – 要分割的字符串元素列

  • prog – 正则表达式程序实例

  • maxsplit – 要执行的最大分割次数。默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列组成的表

std::unique_ptr<table> rsplit_re(strings_column_view const &input, regex_program const &prog, size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用 regex_program 的模式将字符串元素分割成字符串列表列,从字符串末尾开始分隔每个字符串。

每个元素生成一个字符串向量,存储在输出表的相应行中 — table[col,row] = token[col] of string[row],其中 token 是每个分隔符之间的子字符串。

输出表中的行数将与任何输入行中找到的标记数量相同。

分割通过从输入字符串末尾开始遍历进行。使用 pattern 来识别字符串中的分隔符,当达到 maxsplit 或字符串开头时停止分割。

空输入字符串将在第一列的相应行中产生一个相应的空字符串。空行将产生输出表中相应的空行。

忽略 regex_program 的 regex_flags。

s = ["a_bc def_g", "a__bc", "_ab cd", "ab_cd "]
p1 = regex_program::create("[_ ]")
s1 = rsplit_re(s, p1)
s1 is a table of strings columns:
    [ ["a", "a", "", "ab"],
      ["bc", "", "ab", "cd"],
      ["def", "bc", "cd", ""],
      ["g", null, null, null] ]
p2 = regex_program::create("[ _]")
s2 = rsplit_re(s, p2, 1)
s2 is a table of strings columns:
    [ ["a_bc def", "a_", "_ab", "ab"],
      ["g", "bc", "cd", "cd "] ]
抛出:

cudf::logic_error – 如果 pattern 为空。

参数:
  • input – 要分割的字符串元素列

  • prog – 正则表达式程序实例

  • maxsplit – 要执行的最大分割次数。默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列组成的表

std::unique_ptr<column> split_record_re(strings_column_view const &input, regex_program const &prog, size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用给定的 regex_program 将字符串元素分割成字符串列表列,以分隔每个字符串。

每个元素生成一个字符串数组,存储在输出列表列中 — list[row] = [token1, token2, ...] found in input[row],其中 token 是分隔符之间的子字符串。

输出列中的元素数量将与输入列中的元素数量相同。每个单独的列表项将包含该行的新字符串。每行中产生的字符串数量可以从 0 到 maxsplit + 1 不等。

使用 pattern 来识别字符串中的分隔符,当达到 maxsplit 或字符串末尾时停止分割。

空输入字符串将产生相应的空列表项输出行。空行将产生相应的空输出行。

忽略 regex_program 的 regex_flags。

s = ["a_bc def_g", "a__bc", "_ab cd", "ab_cd "]
p1 = regex_program::create("[_ ]")
s1 = split_record_re(s, p1)
s1 is a lists column of strings:
    [ ["a", "bc", "def", "g"],
      ["a", "", "bc"],
      ["", "ab", "cd"],
      ["ab", "cd", ""] ]
p2 = regex_program::create("[ _]")
s2 = split_record_re(s, p2, 1)
s2 is a lists column of strings:
    [ ["a", "bc def_g"],
      ["a", "_bc"],
      ["", "ab cd"],
      ["ab", "cd "] ]

有关此 API 支持的模式的详细信息,请参阅 正则表达式特性 页面。

抛出:

cudf::logic_error – 如果 pattern 为空。

参数:
  • input – 要分割的字符串元素列

  • prog – 正则表达式程序实例

  • maxsplit – 要执行的最大分割次数。默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列表列

std::unique_ptr<column> rsplit_record_re(strings_column_view const &input, regex_program const &prog, size_type maxsplit = -1, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用给定的 regex_program 将字符串元素分割成字符串列表列,从字符串末尾开始分隔每个字符串。

每个元素生成一个字符串向量,存储在输出列表列中 — list[row] = [token1, token2, ...] found in input[row],其中 token 是分隔符之间的子字符串。

输出列中的元素数量将与输入列中的元素数量相同。每个单独的列表项将包含该行的新字符串。每行中产生的字符串数量可以从 0 到 maxsplit + 1 不等。

分割通过从输入字符串末尾开始遍历进行。使用 pattern 来识别字符串内的分隔点,当达到 maxsplit 或字符串开头时停止分割。

空输入字符串将产生相应的空列表项输出行。空行将产生相应的空输出行。

忽略 regex_program 的 regex_flags。

s = ["a_bc def_g", "a__bc", "_ab cd", "ab_cd "]
p1 = regex_program::create("[_ ]")
s1 = rsplit_record_re(s, p1)
s1 is a lists column of strings:
    [ ["a", "bc", "def", "g"],
      ["a", "", "bc"],
      ["", "ab", "cd"],
      ["ab", "cd", ""] ]
p2 = regex_program::create("[ _]")
s2 = rsplit_record_re(s, p2, 1)
s2 is a lists column of strings:
    [ ["a_bc def", "g"],
      ["a_", "bc"],
      ["_ab", "cd"],
      ["ab_cd", ""] ]

有关此 API 支持的模式的详细信息,请参阅 正则表达式特性 页面。

抛出:

cudf::logic_error – 如果 pattern 为空。

参数:
  • input – 要分割的字符串元素列

  • prog – 正则表达式程序实例

  • maxsplit – 要执行的最大分割次数。默认为 -1 表示在每个字符串上进行所有可能的分割。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回结果设备内存的设备内存资源

返回:

字符串列表列