当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.strings.substr用法及代码示例


从字符串的Tensor 返回子字符串。

用法

tf.strings.substr(
    input, pos, len, unit='BYTE', name=None
)

抛出

    • ValueError :如果第一个参数不能转换为 dtype string 的张量。
    • InvalidArgumentError :如果索引超出范围。
    • ValueError :如果poslen不是同一个形状。

参数

  • input Tensor 类型为 string 。弦张量
  • pos 一个Tensor。必须是以下类型之一:int32 , int64。标量定义每个子字符串中第一个字符的位置
  • len 一个Tensor。必须与 pos 具有相同的类型。标量定义要包含在每个子字符串中的字符数
  • unit 一个可选的 string 来自: "BYTE", "UTF8_CHAR" 。默认为 "BYTE" 。用于创建子字符串的单位。以下之一:"BYTE"(用于按字节定义位置和长度)或 "UTF8_CHAR"(用于 UTF-8 编码的 Unicode 代码点)。默认值为 "BYTE" 。如果 unit=UTF8_CHARinput 字符串不包含结构上有效的 UTF-8,则结果未定义。
  • name 操作的名称(可选)。

返回

  • Tensor 类型为 string

对于输入 Tensor 中的每个字符串,创建一个从索引 pos 开始的子字符串,总长度为 len

如果len 定义了一个超出输入字符串长度的子字符串,或者如果len 为负数,则使用尽可能多的字符。

负数pos 表示字符串内从末端向后的距离。

如果 pos 指定的索引超出任何输入字符串的范围,则抛出 InvalidArgumentError

poslen 必须具有相同的形状,否则在创建操作时会抛出 ValueError

注意: Substr最多支持二维广播。更多关于广播这里


例子

使用标量 poslen

input = [b'Hello', b'World']
position = 1
length = 3

output = [b'ell', b'orl']

使用与 input 形状相同的 poslen

input = [[b'ten', b'eleven', b'twelve'],
         [b'thirteen', b'fourteen', b'fifteen'],
         [b'sixteen', b'seventeen', b'eighteen']]
position = [[1, 2, 3],
            [1, 2, 3],
            [1, 2, 3]]
length =   [[2, 3, 4],
            [4, 3, 2],
            [5, 5, 5]]

output = [[b'en', b'eve', b'lve'],
          [b'hirt', b'urt', b'te'],
          [b'ixtee', b'vente', b'hteen']]

poslen 广播到 input

input = [[b'ten', b'eleven', b'twelve'],
         [b'thirteen', b'fourteen', b'fifteen'],
         [b'sixteen', b'seventeen', b'eighteen'],
         [b'nineteen', b'twenty', b'twentyone']]
position = [1, 2, 3]
length =   [1, 2, 3]

output = [[b'e', b'ev', b'lve'],
          [b'h', b'ur', b'tee'],
          [b'i', b've', b'hte'],
          [b'i', b'en', b'nty']]

input 广播到 poslen

input = b'thirteen'
position = [1, 5, 7]
length =   [3, 2, 1]

output = [b'hir', b'ee', b'n']

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.strings.substr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。