【问题标题】:How to Nifi ExecuteScript return attribute without prefix 'u' code python?如何在没有前缀'u'代码python的情况下Nifi ExecuteScript返回属性?
【发布时间】:2017-10-18 05:59:25
【问题描述】:

我有一个 json 数据传入,我使用 ExecuteScript 和 Python 代码来提取键和值然后将此 json 数据放入属性中。这是我的代码:

import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback

class StreamCallback(StreamCallback):

    def __init__(self):
        pass

    def process(self, inputStream, outputStream):
        text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
        data = json.loads(text)
        for key in data:
            first = key
            break
        content = data[first]
        viewFlowFile = session.create()
        viewFlowFile = session.putAllAttributes(viewFlowFile,{'project': str(first), 'content': str(content)})
        session.transfer(viewFlowFile, REL_SUCCESS)
flowFile = session.get()
if flowFile != None:

    flowFile = session.write(flowFile, StreamCallback())
    session.transfer(flowFile, REL_FAILURE)
    session.commit()

当我运行 Job 时 ExecuteScript 返回带有前缀 'u' 的字符串。

我的意见:

{ “项目_1”:{ "device_code": "V001", "line_code": "阳极氧化 12L"}}

以及content的输出属性:

{ u'device_code': u'V001', u'line_code': u'Anodiziing 12L'}

我也试过添加

#!/usr/bin/python3

在正文代码的标题上。但是没有变化。

我的问题是如何使用 ExecuteScript Nifi 正确返回不带前缀 'u' 的字符串?

更新: 我们需要将数据类型从字典转换为字符串。 使用json.dumps(content) 代替str(content) 并且输出将没有前缀'u'。

【问题讨论】:

  • 您没有说明问题所在。
  • json 字符串是 Unicode。 u'' 只是您正在打印的字典包含 Unicode 字符串的指示符。如果您不想看到它们,请直接打印字符串。如果您运行的是 Python 3,它不会将 u'' 用于 Unicode 字符串,因为它们是默认值,但您会看到 b'' 用于字节字符串。
  • @MarkTolonen,谢谢。将字典转换为字符串直接放入后,输出没有前缀'u'作为我的目的。

标签: python json unicode apache-nifi processor


【解决方案1】:

JSON 字符串是 Unicode。 u'' 只是您正在打印的字典包含 Unicode 字符串的指示符。如果您不想看到它们,请直接打印字符串。如果您运行的是 Python 3,它不会将 u'' 用于 Unicode 字符串,因为它们是默认值,但您会看到 b'' 用于字节字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2017-07-05
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多