[英]Find if lines on one file appear as words in the lines of another file in 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.