用其他文件列中包含的单词替换文本中的单词

时间:2018-07-12 10:12:40

标签: python python-3.x csv

我正在尝试用大文本的另一列中的单词替换一列中的单词。

数据:

  

桌子和椅子坏了

     

孩子们在街上玩耍

     

我有很多猫。

文本列

  

缩写,缩写

     

表格,表格

     

椅子,椅子

     

是,

     

失败,失败

     

断,破

     

孩子,孩子

     

玩,玩

     

猫,猫

     

月光,月光下

import csv

with open('data.csv', 'r') as file, open('text-columns.csv', 'r') as columns:
    text = csv.reader(file)
    text_csv = csv.reader(columns, delimiter = ',')

    for rows in text_csv:
        new_rows = ','.join(word for word in rows)

        for lines in text:
            new_lines = ''.join(line for line in lines)

            for elements in new_rows:
                new_text = new_lines.replace(elements[1], elements[0])

                print (new_text)

好的输出:

  

桌子椅子 休息

     

孩子 在街上玩

     

我有很多

我的输出:

  

回溯(最近通话最近一次):

     

文件“ l.py”,第15行,位于

     

new_text = new_lines.replace(elements [1],elements [0])

     

IndexError:字符串索引超出范围

1 个答案:

答案 0 :(得分:1)

这是一种方法。

例如:

import csv

with open('data.csv', 'r') as file, open('text-columns.csv', 'r') as columns:
    text_csv = csv.reader(columns, delimiter = ',')
    text_csv = list(text_csv)

    res = []
    for row in file:
        if row:
            for checkVal in text_csv:
                if checkVal[1] in row:
                    row = row.replace(checkVal[1], checkVal[0])
            res.append(row)

with open("out.csv", 'w') as file:
    for row in res:
        file.write(row)