我正在使用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')
答案 0 :(得分:0)
在我看来,你的stng.replace('\"', '"')
行没有做你想象的那样。 \
是所有python字符串中的转义字符,因此它会转义双引号并用自己替换所有双引号("
)。
请改为尝试:
strng = strng.replace(r'\"', '"')
r""
表示法创建一个原始字符串,它将所有文本视为文字。作为一个更好的例子:
"\n" # one character newline
r"\n" # two characters \ and n