Python将撇号写入文件

时间:2019-03-01 04:00:59

标签: python python-3.x string-formatting

我正在使用Python将下载的Facebook Messenger对话从JSON转换为文本文件。我已经将JSON转换为文本,一切都很好。我需要剥离不必要的信息并反转消息的顺序,然后将输出保存到文件中,这已经完成。但是,当我使用Python格式化消息时,当我查看输出文件时,有时用â代替撇号。

我的Python不能像我通常使用Java一样出色,因此可能有很多事情我可以改进。如果有人可以为此问题建议一些更好的标签,我也将不胜感激。

单引号有效的示例:您不是要让他们吗?

撇号不起作用的例子:这只是我发现的一个按钮

是什么原因导致这种情况发生,为什么每次出现撇号时都不会发生?

这是脚本:

#/usr/bin/python3

import datetime

def main():

    input_file = open('messages.txt', 'r')
    output_file = open('results.txt', 'w')

    content_list = []
    sender_name_list = []
    time_list = []

    line = input_file.readline()

    while line:
        line = input_file.readline()

        if "sender_name" in line:
            values = line.split("sender_name")
            sender_name_list.append(values[1][1:])

        if "timestamp_ms" in line:
            values = line.split("timestamp_ms")
            time_value = values[1]
            timestamp = int(time_value[1:])         
            time = datetime.datetime.fromtimestamp(timestamp / 1000.0)      
            time_truncated = time.replace(microsecond=0)
            time_list.append(time_truncated)    

        if "content" in line:
            values = line.split("content")
            content_list.append(values[1][1:])

    content_list.reverse()
    sender_name_list.reverse()
    time_list.reverse()

    for x in range(1, len(content_list)):
        output_file.write(sender_name_list[x])
        output_file.write(str(time_list[x]))
        output_file.write("\n")
        output_file.write(content_list[x])
        output_file.write("\n\n")


input_file.close()
output_file.close()

if __name__ == "__main__":
    main()

编辑: 该问题的答案是添加

import codecs
input_file = codecs.open('messages.txt', 'r', 'utf-8')
output_file = codecs.open('results.txt','w', 'utf-8')

1 个答案:

答案 0 :(得分:1)

很难看到传入的数据,但是我怀疑不是单引号(Unicode U+0027 ' APOSTROPHE),而是卷曲等效(U+2019 ’ RIGHT SINGLE QUOTATION MARK)。解释为老式的ascii。

代替

output_file = open('results.txt', 'w')

尝试

import codecs
output_file = codecs.open('results.txt','w', 'utf-8')

您可能还需要输入文件中的相应内容。