字符串分割#
- 组 分割
函数
-
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_record
和split_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 – 用于分配返回结果设备内存的设备内存资源
- 返回:
字符串列表列
-
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())#