字符串修改#

group strings_modify

枚举

enum class side_type#

cudf::strings::stripcudf::strings::pad 函数的方向标识符。

值:

enumerator LEFT#

从字符串的开头去除/填充字符

enumerator RIGHT#

从字符串的末尾去除/填充字符

enumerator BOTH#

从字符串的开头和结尾去除/填充字符

enum class filter_type : bool#

移除或保留cudf::strings::filter_characters中指定的字符范围。

值:

enumerator KEEP#

除了指定的字符外,所有字符都将被移除。

enumerator REMOVE#

仅删除指定的字符。

函数

std::unique_ptr<column> pad(strings_column_view const &input, size_type width, side_type side = side_type::RIGHT, std::string_view fill_char = " ", rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用提供的字符为每个字符串添加填充。

如果字符串已经是 width 或更多字符,则不进行填充。此外,不会截断任何字符串。

空字符串条目会导致输出列中的相应条目为空。

Example:
s = ['aa','bbb','cccc','ddddd']
r = pad(s,4)
r is now ['aa  ','bbb ','cccc','ddddd']
Parameters:
  • input – 此操作的字符串实例

  • width – 每个字符串的最小字符数

  • side – 填充字符的位置;默认是右侧填充(左对齐)

  • fill_char – 用于填充的单个UTF-8字符;默认是空格字符

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

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

Returns:

带有填充字符串的新列

std::unique_ptr<column> zfill(strings_column_view const &input, size_type width, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

在每个字符串的左侧添加‘0’作为填充。

这相当于 pad(width,left,’0)`,但如果符号字符出现在第一个位置,则会保留它。

如果字符串已经达到或超过宽度字符,则不进行填充。不会截断任何字符串。

输入中的空行会导致输出列中相应的空行。

Example:
s = ['1234','-9876','+0.34','-342567', '2+2']
r = zfill(s,6)
r is now ['001234','-09876','+00.34','-342567', '0002+2']
Parameters:
  • input – 此操作的字符串实例

  • width – 每个字符串的最小字符数

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

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

Returns:

新字符串列

std::unique_ptr<column> reverse(strings_column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

反转每个字符串中的字符。

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

Example:
s = ["abcdef", "12345", "", "A"]
r = reverse(s)
r is now ["fedcba", "54321", "", "A"]
Parameters:
  • input – 此操作的字符串列

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

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

Returns:

新字符串列

std::unique_ptr<column> strip(strings_column_view const &input, side_type side = side_type::BOTH, string_scalar const &to_strip = string_scalar(""), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从每个字符串的开头或结尾(或两者)移除指定的字符。

to_strip 参数可以包含一个或多个字符。输入字符串中所有在 to_strip 中的字符都将被移除。

如果 to_strip 是空字符串,则会删除空白字符。空白字符包括空格字符以及制表符和换行符等控制字符。

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

Example:
s = [" aaa ", "_bbbb ", "__cccc  ", "ddd", " ee _ff gg_"]
r = strip(s,both," _")
r is now ["aaa", "bbbb", "cccc", "ddd", "ee _ff gg"]
Throws:

cudf::logic_error – 如果 to_strip 无效。

Parameters:
  • input – 此操作的字符串列

  • side – 表示要从每个字符串的开头、结尾或两者中删除的字符;默认是两者

  • to_strip – 要从每个字符串中去除的UTF-8编码字符;默认是空字符串,表示去除空白字符

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

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

Returns:

新字符串列。

std::unique_ptr<column> translate(strings_column_view const &input, std::vector<std::pair<char_utf8, char_utf8>> const &chars_table, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

翻译每个字符串中的单个字符。

这也可以用于通过为相应的表条目指定0来删除字符。

空字符串条目会导致输出列中的空条目。

Example:
s = ["aa","bbb","cccc","abcd"]
t = [['a','A'],['b',''],['d':'Q']]
r = translate(s,t)
r is now ["AA", "", "cccc", "AcQ"]
Parameters:
  • input – 此操作的字符串实例

  • chars_table – UTF-8 字符映射表

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

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

Returns:

带有填充字符串的新列

std::unique_ptr<column> filter_characters(strings_column_view const &input, std::vector<std::pair<cudf::char_utf8, cudf::char_utf8>> characters_to_filter, filter_type keep_characters = filter_type::KEEP, string_scalar const &replacement = string_scalar(""), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从字符串列中的每个字符串中移除字符范围。

这也可以用于仅保留指定的字符范围,并从每个字符串中移除所有其他字符。

Example:
s = ["aeiou", "AEIOU", "0123456789", "bcdOPQ5"]
f = [{'M','Z'}, {'a','l'}, {'4','6'}]
r1 = filter_characters(s, f)
r1 is now ["aei", "OU", "456", "bcdOPQ5"]
r2 = filter_characters(s, f, REMOVE)
r2 is now ["ou", "AEI", "0123789", ""]
r3 = filter_characters(s, f, KEEP, "*")
r3 is now ["aei**", "***OU", "****456***", "bcdOPQ5"]

空字符串条目会导致输出列中的空条目。

Throws:

cudf::logic_error – 如果 replacement 无效

Parameters:
  • input – 此操作的字符串实例

  • characters_to_filter – 要过滤的字符范围表

  • keep_characters – 如果为真,则保留characters_to_filter并移除所有其他字符

  • replacement – 每个被移除字符的可选替换字符串

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

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

Returns:

带有过滤字符串的新列

std::unique_ptr<column> wrap(strings_column_view const &input, size_type width, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过用换行符(ASCII 0x0A)替换适当的空白,将字符串换行到比width短的多个行上。

对于输入列中每个长度超过width的字符串行,相应的输出字符串行将插入换行符,以便每行不超过width characters。尝试使用现有的空白位置来分割字符串,但如果必要,可能会分割非空白序列。

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

示例 1:

width = 3
input_string_tbl = [ "12345", "thesé", nullptr, "ARE THE", "tést strings", "" ];

wrapped_string_tbl = wrap(input_string_tbl, width)
wrapped_string_tbl = [ "12345", "thesé", nullptr, "ARE\nTHE", "tést\nstrings", "" ]

示例 2:

width = 12;
input_string_tbl = ["the quick brown fox jumped over the lazy brown dog", "hello, world"]

wrapped_string_tbl = wrap(input_string_tbl, width)
wrapped_string_tbl = ["the quick\nbrown fox\njumped over\nthe lazy\nbrown dog", "hello, world"]

Parameters:
  • input – 字符串列

  • width – 每行字符串的最大字符宽度

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

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

Returns:

包装字符串的列