Python Standard Out

时间:2015-01-24 20:09:26

标签: python stdout

我正在使用Hive将一些数据连接成一个字符串,对记录进行分组,然后使用Python例程进行转换。看起来Python正在为引用的数据添加转义字符。我尝试过使用print和sys.stdout.write。我做错了什么?

运行Python代码后的示例: 之前:

'XML_1.0 Routing ReplyToQMgr="InfoA" ReplyToQ="Data..."

'XML_1.0 Routing ReplyToQMgr=\"InfoA\" ReplyToQ=\"Data...\"

以下是相关代码:

def sort_tup(list_input):
    new = sorted(list_input)
    str = ''
    for i in range(0, len(new)):
        str = str + new[i][30:]
    return str

for line in sys.stdin:
    if line > 1:
            line = line[2:-3]
            line = line.split('","')
            strng = sort_tup(line)
            strng = strng.rstrip(' \t\r\n\0')
            strng = strng.replace('""','"')
            strng = strng.replace('\"', '"')
            strng = strng.replace("\'", "'")
            id = str(line)
            id = id[11:31]
            partition = str(line)
            partition = partition[6:10]
            strng = '%s \t %s \t %s' %(partition, id, strng)
            sys.stdout.write(strng + '\n')

1 个答案:

答案 0 :(得分:0)

在我看来,你的stng.replace('\"', '"')行没有做你想象的那样。 \是所有python字符串中的转义字符,因此它会转义双引号并用自己替换所有双引号(")。

请改为尝试:

strng = strng.replace(r'\"', '"')

r""表示法创建一个原始字符串,它将所有文本视为文字。作为一个更好的例子:

"\n"  # one character newline
r"\n" # two characters \ and n