将具有可变长度的句子映射到特定键

时间:2017-07-04 03:45:58

标签: python-3.x

我是Python的新手,也是这个论坛的新手。以下是问题

该文件如图所示 File Format。 我可以在text2列中拆分文本,并使用以下代码

写入不同的行
myfile=open('Output.csv,'w')
wr=csv.writer(myfile,lineterminator='\n')
df=pd.read_excel("Input.xlsx")

for txt in df['Text2']:
   sentence.append(txt.split('.'))
for pharse in sentence:
    for words in pharse:
        wr.writerow([words])

我需要一个关于如何映射句子的帮助,这些句子的长度是可变的。还有,如何实现附加图像文件中提到的特定格式。 此外,writerow函数开始在第一行写入,但如何指定从第三列开始。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

myfile = open('Output.csv','w')
wr = csv.writer(myfile, lineterminator='\n')
entries = {}
for k, txt1, txt2 in df.values:
    sentences = [s.strip() for s in txt2.split('.') if len(s.strip()) > 0]
    # sentences = [s.strip() + '.' for s in txt2.split('.') if len(s.strip()) > 0]
    entries[k] = [txt1, sentences]
for k in entries.keys():
    txt1, txt2 = entries[k]
    wr.writerow([k, txt1, txt2[0]])
    for s in txt2[1:]:
        wr.writerow(['', '', s])
myfile.close()

如果要在csv文件中的每个句子末尾加一个点,请使用替代sentences = ...行(上面代码中注释的行)。从您的示例图像中,不清楚点需要发生什么(有时它出现在输出中,有时它不会出现)。

此外,如果需要,可以通过将两个循环组合成一个循环来进一步简化代码:

myfile = open('Output.csv','w')
wr = csv.writer(myfile,lineterminator='\n')
for k, txt1, txt2 in df.values:
    sentences = [s.strip() for s in txt2.split('.') if len(s.strip()) > 0]
    wr.writerow([k, txt1, sentences[0]])
    for s in sentences[1:]:
        wr.writerow([None,'',s])
myfile.close()