在写入文件时删除多余的换行符



这个小脚本将关键字写入文件,但在每个关键字之间添加一个额外的换行符。我该如何让它停下来?即代替

Apple
Banana
Crayon 

我想要

Apple
Banana
Crayon

我试着在谷歌上搜索"listwrite",但无济于事。

我确信这是一件非常简单的事情,但我想不通。

#!/usr/local/bin/python
###################################################
# nerv3.py
# Goal: Named entity recognition script to pull names/place from text
# called as python nerv3.py text_path_or_file 
#
# Inputs:
# path - text file or directory containing text files
# output - output file name 
# uuid
# Outputs:
# Output file written
# People, Places, Others files
#
###################################################
#gonna need to install AlchemyAPI
import AlchemyAPI
import argparse
import xml.etree.ElementTree as ET
import collections
import codecs
import os
#from IPython import embed 
#=================================================
def listwrite(output_file,thelist):
    for item in thelist:
        item.encode('utf-8')
        output_file.write("%snn" % item)
#=================================================
def main():
    tmpdir = "/tmp/pagekicker"
    #personal api key saved as api_key.txt
    parser = argparse.ArgumentParser()
    parser.add_argument('path', help = "target file or directory for NER")
    parser.add_argument('output', help = "target file for output")
    parser.add_argument('uuid', help = "uuid")
    args = parser.parse_args()
    in_file = args.path
    out_file = args.output
    uuid = args.uuid
    folder = os.path.join(tmpdir, uuid)
    print folder    
    cwd = os.getcwd()
    apikey_location = os.path.join(cwd, "api_key.txt")
    with open(in_file) as f:
        text = f.read()
    alchemyObj = AlchemyAPI.AlchemyAPI()
    alchemyObj.loadAPIKey(apikey_location)
    result = alchemyObj.TextGetRankedNamedEntities(text)
    root = ET.fromstring(result)
    place_list = ['City', 'Continent', 'Country', 'Facility', 'GeographicFeature',
    'Region', 'StateOrCounty']
    People = {}
    Places = {}
    Other = {}
    for entity in root.getiterator('entity'):
        if entity[0].text == 'Person':
            People[entity[3].text]=[entity[1].text, entity[2].text]
        elif entity[0].text in place_list:
            Places[entity[3].text] = [entity[1].text, entity[2].text]
        else:
            Other[entity[3].text] = [entity[1].text, entity[2].text]
    #print lists ordered by relevance
    Places_s = sorted(Places, key = Places.get, reverse = True)
    People_s = sorted(People, key = People.get, reverse = True)
    Other_s = sorted(Other, key = Other.get, reverse = True)
# here is where things seem to go awry
    with codecs.open(out_file, mode = 'w', encoding='utf-8') as o:
        listwrite(o, People_s)
        listwrite(o, Places_s)
        listwrite(o, Other_s)
    out_file = os.path.join(folder, 'People')
    with codecs.open(out_file, mode= 'w', encoding='utf-8') as o:
          listwrite(o, People_s)
    out_file = os.path.join(folder, 'Places')
        with codecs.open(out_file, mode= 'w', encoding='utf-8') as o:
         listwrite(o, Places_s)
    out_file = os.path.join(folder, 'Other')
    with codecs.open(out_file, mode= 'w', encoding='utf-8') as o:
          listwrite(o, Other_s)
#=================================================
if __name__ == '__main__':
    main()
def listwrite(output_file,thelist):
    for item in thelist:
        item.encode('utf-8')
        output_file.write("%snn" % item)

在代码中,listwrite被定义为一个函数。对于thelist中的每个item,它都会写入item,后面跟两个换行符。要删除多余的行,只需删除其中一个n s。

def listwrite(output_file,thelist):
    for item in thelist:
        item.encode('utf-8')
        output_file.write("%sn" % item)

相关内容

  • 没有找到相关文章

最新更新