【发布时间】: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.
【问题讨论】: