我想在另一个文本文件中找到list.txt中列出的字符串(每行一个字符串),以防万一找不到“ string,other_sentence”时打印“string,one_sentence”。我正在使用以下代码,但它仅从文件list.txt的字符串列表中找到最后一个字符串。无法理解可能是什么原因?
data = open('c:/tmp/textfile.TXT').read()
for x in open('c:/tmp/list.txt').readlines():
if x in data:
print(x,',one_sentence')
else:
print(x,',another_sentence')
当您使用读取文件时readlines()
,生成的列表元素确实具有尾随换行符。这很可能就是您比预期少匹配的原因。
而不是写
for x in list:
写
for x in (s.strip() for s in list):
这将从中的字符串中删除前导和尾随空格list
。因此,它从字符串中删除结尾的换行符。
为了整合您的程序,您可以执行以下操作:
with open('c:/tmp/textfile.TXT') as f:
haystack = f.read()
if not haystack:
sys.exit("Could not read haystack data :-(")
with open('c:/tmp/list.txt') as f:
for needle in (line.strip() for line in f):
if needle in haystack:
print(needle, ',one_sentence')
else:
print(needle, ',another_sentence')
我不想做出太大的改变。最重要的区别是我在这里通过with
语句使用上下文管理器。它可以确保为您正确处理文件(主要是关闭文件)。同样,使用生成器表达式动态删除“
needle”行。上述方法逐行读取并处理针文件,而不是一次将整个文件加载到内存中。当然,这仅对大文件有所不同。
我试图创建一个java程序,它可以读取一个名为file1.txt的文件,存储它的字符串,并将这些字符串搜索到另一个名为file2.txt的文件,如果没有找到匹配,则从file1.txt打印特定的字符串。 现在我可以从file1.txt获得数据,但无法搜索file1的数据,例如在file2.txt中搜索单词“home” 请看这里的file1.txt包含Homee,而file2.txt有Home,所以
我也在尝试用Python创建一个脚本来读取文本文件。在文本文件的每一行上,都有一个文件名。我希望脚本在文本文件的每一行中循环,并将带有文件名的文件从循环的当前行、从源文件夹移动到特定的目标。 希望这段代码能更准确地说明我在做什么: 我想把文件的内容和特定的文件名放到一个数组中,但是我有62700个可能的文件名,所以我想如果它只是在循环到每一行时移动文件,那么它会更有效率吗? 我还想到了使用迭代器(
问题内容: 我正在学习Java,但我不太确定搜索文件的方式。我想构建一个返回文件名的函数(文件名应以开头和结尾) 例如,在文件夹中,我们包含Java源文件和一些文件。例如,文件: 1.txt 2.txt 4.txt start.txt star.txt onstart.txt starton.txt myjava.java 然后,我想获得,& 我一直在寻找,但是找不到找到文件的好方法。有谁知道查找
问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:
如何将一个文本的值追加到另一个文本文件中的特定位置? One.txt Second.txt 需要将second.txt中的one.txt值放置在{}中提到的名称所在的位置。 输出:
问题内容: 我有一个带有汉字文本的文件,我想将这些文本复制到另一个文件中。但是文件输出混乱了中文字符。注意,在我的代码中,我已经在使用“ UTF8”作为编码了: 问题答案: 在这种情况下,请勿使用FileReader,因为它不允许您指定输入编码。在FileInputStream上构造一个InputStreamReader。 像这样:
问题内容: 我有两个文件。其中一个定义了一组数字-值对,如下所示( fileA ): 另一个文件包含一堆值配对,如下所示( fileB ): 我想编写一个脚本,用文件A中的对应数字替换文件B中的值。生成新文件还是更改现有文件B都没有关系。 有任何想法吗?谢谢 问题答案: NR == FNR {a [$ 2] = $ 1; next} =>处理fileA时为true。形成一个关联数组,其中索引是第二
问题内容: 我想检查字符串是否在文本文件中。如果是,请执行X。否则,请执行Y。但是,True由于某些原因,此代码始终返回。谁能看到错在哪里? 问题答案: 你一直得到的原因已经给出,因此我只提供另一个建议: 如果你的文件不是太大,则可以将其读取为字符串,然后使用它(比读取和检查每行更容易,并且通常更快): 另一个技巧:通过使用创建使用基础文件的“字符串状”对象(而不是读取内存中的整个文件),可以减轻