首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的python文本搜索对csv文件中的某些行正确工作,而对其他行不起作用?

为什么我的python文本搜索对csv文件中的某些行正确工作,而对其他行不起作用?
EN

Stack Overflow用户
提问于 2018-06-28 02:23:58
回答 1查看 43关注 0票数 -1

我编写了一个python脚本,用于打开和读取具有以下结构的CSV文件

代码语言:javascript
复制
ID|Search Company|Past Job Title 1|Past Job Title 2|Past Job Title 3|

然后,它会编写一个具有以下结构的CSV文件

代码语言:javascript
复制
ID|Search Company|Consolidated Company| Past Job Title 1|Past Job Title 2|Past Job Title 3|

我还有下面的python代码

代码语言:javascript
复制
input_filename = 'filename.csv'

input_headers = ['ID',
                 'Search Company',
                 'Past Job Title 1',
                 'Past Job Title 2',
                 'Past Job Title 3']

output_headers = ['ID',
                 'Search Company',
                 'Consolidated Company',
                 'Past Job Title 1',
                 'Past Job Title 2',
                 'Past Job Title 3']



#set up the file writer
out_employees_file = open('consolidated_' + input_filename, 'wb')
employees_writer = unicodecsv.DictWriter(out_employees_file, 
lineterminator='\n', escapechar='\\', fieldnames=output_headers)

#set up the file reader
employees_file = open(input_filename, 'r', encoding='utf-8')
employees_reader = csv.reader(employees_file, delimiter=',')


for row in employees_reader:
    consolidated_name = ''
    if 'Searched Company' != row[1]:
        if row[1] in row[2]:
            consolidated_name = row[2]

        if row[1] in row[3]:
            consolidated_name = row[3]

        if row[1] in row[4]:
            harmonized_name = row[4]

    employees_writer.writerow({'ID': row[0],
                           'Consolidated Company':consolidated_name,
                           'Past Job Title 1':row[2],
                           'Past Job Title 2':row[3],
                           'Past Job Title 3':row[4]})
employees_file.flush()
employees_file.close()

我的脚本运行时,问题是它只在读取CSV文件的某些行时才表现出预期的行为。由于某些原因,Python只能在CSV文件的某些行中找到我要查找的公司名称。

我将给出一个样例输入文件。

代码语言:javascript
复制
ID|Search Company|Past Job Title 1|Past Job Title 2|Past Job Title 3|
 1|Good Company  |Bad Company     | Horrid Cmp LLC |Good Company    |
 2|Good Company  |Good Company    | Rotten Company |Stupid Company  |
 3|Good Company  |Stinky Company  | Good Company   |Company Malo    |

这是我得到的输出

代码语言:javascript
复制
ID|Search Company|Consolidated Company|Past Job Title 1|Past Job Title 2|Past Job Title 3|
 1|Good Company  |                    |Bad Company     | Horrid Cmp LLC |Good Company    |
 2|Good Company  |Good Company        |Good Company    | Rotten Company |Stupid Company  |
 3|Good Company  |                    |Stinky Company  | Good Company   |Company Malo    |

我应该在Consolidated Company列中为输出文件的每一行获得一个值,因为'Good Company‘显示在文件的每一行中。然而,我实际看到的是,我只在某些行中获得了一个值。

我还不能弄清楚为什么我的脚本对输入文件的某些行有效,但对输入文件的其他行无效。我会认为我的脚本要么万能,要么万事俱备,但事实并非如此,为什么呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51069231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档