【问题标题】:converting char to list in R将char转换为R中的列表
【发布时间】:2016-08-04 06:36:56
【问题描述】:

我编写了一个 python 脚本,用于读取邮件内容并附加到列表并在 R 中调用此 python 脚本。问题是 R 将列表视为一个而不是其中的两个元素。

这是我的 python 脚本:

{
import sys
import string
import glob

def parseOutText(f):
    f.seek(0)
    all_text = f.read()
    ### split off metadata
    content = all_text.split("Bcc:")
    return content

def main():
    path = "D:/Hadoop/practice/machine_learning/mails/*.txt"
    files = glob.glob(path)
    file_list = []
    for each_file in files:
        ff = open(each_file, "r")
        text = parseOutText(ff)
        #text = sys.stdout.write(ff.read())
        file_list.append(text)
        ff.close()
    print(file_list)
    print(len(file_list))
}

以及为此的输出。

[['发件人:xxx@xxx.com\n收件人:xyz@xxx.com\n主题:嗨\n抄送: abc@xxx.com\nMime-Version: 1.0\nContent-Transfer-Encoding: 7bit\n', ' test@xxx.com\n\n您好,\n\n您的问题已解决。 \n\n请回复 此电子邮件,如果它不起作用,请告诉我们。\n\n谢谢 \nCCD.'], ['发件人:abc@xxx.com\n收件人:test2@xxx.com\n主题:嗨\n抄送: xyz@xxx.com\nMime-Version: 1.0\nContent-Transfer-Encoding: 7bit\n', ' test@xxx.com\n\n嗨,\n\n这不会成功,除非你 努力工作。\n\n谢谢\nCCD。']] 2

R 代码:

#setting the working directory to the mails folder
setwd("D:/Hadoop/practice/machine_learning/mails")
command = "python"
output = as.list(system2(command, args = "D:/Hadoop/practice/machine_learning/mails/testR.py", stdout = TRUE))
print(output)
print(length(output))
print(str(output))
str(command)

R 输出:

[[1]] [1] "[['发件人:xxx@xxx.com\n收件人:xyz@xxx.com\n主题:嗨\n抄送: abc@xxx.com\nMime-Version: 1.0\nContent-Transfer-Encoding: 7bit\n', ' test@xxx.com\n\n嗨,\n\n你的问题已经解决了。 \n\n请 回复此电子邮件,如果它不起作用,请告诉我们。\n\n谢谢 你\nCCD。'], ['发件人:abc@xxx.com\n收件人:test2@xxx.com\n主题: 嗨\n抄送:xyz@xxx.com\nMime-版本:1.0\n内容-传输-编码: 7bit\n', ' test@xxx.com\n\n嗨,\n\n这行不通,除非 直到你更加努力。\n\n谢谢\nCCD。']]"

打印(长度(输出)) [1] 1

如何将两封邮件作为两个元素放在同一个列表中?

邮件:

From: xxx@xxx.com
To: xyz@xxx.com
Subject: Hi
Cc: abc@xxx.com
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Bcc: test@xxx.com

Hi,

Your problem is resolved. 

Please reply to this email and let us know if it is not working.

Thank you 
CCD.

第二封邮件:

From: abc@xxx.com
To: test2@xxx.com
Subject: Hi
Cc: xyz@xxx.com
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
Bcc: test@xxx.com

Hi,

This will not work out unless and until you work harder.

Thank you 
CCD.

【问题讨论】:

    标签: python r list email


    【解决方案1】:
    l = as.list(cbind(text1, text2))
    

    给我以下输出:

    [[1]]
    [1] " From: xxx@xxx.com\nTo: xyz@xxx.com\nSubject: Hi\nCc: abc@xxx.com\nMime-Version: 1.0\nContent-Transfer-Encoding: 7bit\nBcc: test@xxx.com\n\nHi,\n\nYour problem is resolved. \n\nPlease reply to this email and let us know if it is not working.\n\nThank you \nCCD."
    
    [[2]]
    [1] "From: abc@xxx.com\nTo: test2@xxx.com\nSubject: Hi\nCc: xyz@xxx.com\nMime-Version: 1.0\nContent-Transfer-Encoding: 7bit\nBcc: test@xxx.com\n\nHi,\n\nThis will not work out unless and until you work harder.\n\nThank you \nCCD."
    

    【讨论】:

    • 嗨@datahero,我不明白我应该在哪里调用这个cbind?在 system2 我将调用 python 脚本的地方?这两封邮件作为输出变量的列表出现。还是我错过了什么?请提出建议。
    • 嗨@venkat,你能给我你的确切意见吗?我将尝试根据它调整我的答案。干杯。
    • 嗨@datahero,我的输入是提到的目录中存在的文件。现在我已经创建了两个文本文件(邮件)并循环它们,读取内容并将其添加到 python 中的列表中。 R文件中的输入,是python脚本的输出。
    猜你喜欢
    • 2021-07-23
    • 2018-07-22
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多