繁体   English   中英

查找某些行中的特定单词并将其写入python中的文件

[英]Find and write certain words in lines to a file in python

我有一个西里尔文的.txt文件。 它的结构是这样,但以西里尔字母表示:

city text text text.#1#N
river, text text.#3#Name (Name1, Name2, Name3)   
lake text text text.#5#N (Name1)        
mountain text text.#23#Na

我需要的:
1)看一行中的第一个单词
2)如果它是“ river”,则将“ #3# ”之后的所有单词(即名称(Name1,Name2,Name3))写入文件“ river”中。

我还必须与城市,湖泊,山脉等其他第一句话打交道
我所做的只是找到第一个单词是否为“ city”,并将整行保存到文件中:

lines = f.readlines()
for line in lines:
    if line.startswith('city'):
        f2.write(line)
f.close()
f2.close()

我知道我可以使用正则表达式来查找名称:#[0-9] +#(\\ W +),但是我不知道如何将其实现为代码。
我真的需要你的帮助! 我很高兴获得任何帮助。

如果您所有的河流**之后都带有s,就像您在上面发布的代码中一样,我将执行以下操作:

for line in f.readlines():
     items = line.split("**,")
     if items[0] == "**river":
          names = line.split("#")[1].strip().split("(")[1].split(")")[0].split(",")
          names = [Name1, Name2, Name3]
          #.. now write each one

您要在此处执行的操作是避免对所需文件的名称进行硬编码。 而是从输入文件中收集该信息。 创建您需要写入的文件的字典,并根据需要打开每个文件。 这样的事情(未经测试,可能需要一些适应):

 outfiles = {}
 try:
     with open("infile.txt") as infile:
         for line in infile:
             tag = line.split(" ", 1)[0].strip("*, ")     # e.g. "river"
             if tag not in outfiles:   # if it's the first time we've seen a tag
                 outfiles[tag] = open(tag = ".txt", "w")  # open tag.txt to write
             content = line.rsplit("#", 1)[-1].strip("* ")
             outfiles[tag].write(content + "\n")
 finally:
     for outfile in outfiles.itervalues():
         outfile.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM