Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从一个文件中读取单词并将其放入另一个文件中_Python - Fatal编程技术网

Python 从一个文件中读取单词并将其放入另一个文件中

Python 从一个文件中读取单词并将其放入另一个文件中,python,Python,我想从一个文件中挑选单词,并使用python将它们grep到另一个文件中。代码看起来像 f1 = open("file1.txt",'r') f2 = open("file2.txt",'r') def find_word(str, fp): for line in fp: if line == str: print (line) for word in f1: find_word(word, f2) 虽然我确信file2.txt中存

我想从一个文件中挑选单词,并使用python将它们grep到另一个文件中。代码看起来像

f1 = open("file1.txt",'r')
f2 = open("file2.txt",'r')

def find_word(str, fp):
    for line in fp:
        if line == str:
            print (line)

for word in f1:
    find_word(word, f2)

虽然我确信file2.txt中存在一些单词,但没有打印任何内容。该代码段有什么问题吗?

检查函数
查找word

def find_单词(str,fp):
对于fp中的行:
如果line==str:
打印(行)
这将迭代文件中由
fp
给出的每一行(或就此而言的任何iterable)。除非字符串
str
与文件中的一行完全匹配(包括换行符,如果适用),否则函数不会打印任何内容。你可能想检查它是否在那一行,用

def find_单词(str,fp):
对于fp中的行:
如果str符合要求:
打印(行)
或者更好,因为
str
是一个内置类

def find_word(查询,fp):
对于fp中的行:
如果行中有查询:
打印(行)

您可能还希望在中从
word
中删除换行符

f1中的单词的
:
查找单词(单词,f2)
因此,它可能看起来像

f1中的单词的
:
查找单词(word.rstrip('\r\n'),f2)

检查功能
查找单词

def find_单词(str,fp):
对于fp中的行:
如果line==str:
打印(行)
这将迭代文件中由
fp
给出的每一行(或就此而言的任何iterable)。除非字符串
str
与文件中的一行完全匹配(包括换行符,如果适用),否则函数不会打印任何内容。你可能想检查它是否在那一行,用

def find_单词(str,fp):
对于fp中的行:
如果str符合要求:
打印(行)
或者更好,因为
str
是一个内置类

def find_word(查询,fp):
对于fp中的行:
如果行中有查询:
打印(行)

您可能还希望在中从
word
中删除换行符

f1中的单词的
:
查找单词(单词,f2)
因此,它可能看起来像

f1中的单词的
:
查找单词(word.rstrip('\r\n'),f2)

第一次搜索单词时,您会使用整个输入文件。后续搜索将失败,因为
对于文件中的行
将不返回任何内容

如果你在一行中搜索单词,那也会失败,因为你读的这行包含了终止的换行符;所以

if 'word\n' in line:

如果不是紧靠行尾,将找不到
word

您在第一次搜索单词时会使用整个输入文件。后续搜索将失败,因为
对于文件中的行
将不返回任何内容

如果你在一行中搜索单词,那也会失败,因为你读的这行包含了终止的换行符;所以

if 'word\n' in line:

如果
word
不是紧靠行尾,则找不到它。

您能举例说明
line
的值可能是什么吗?类似于
/*0040*/MOV R4,0x0;/*0x000000000047802*/
和MOV的I grep所以您是否在问为什么字符串
“/*0040*/MOV R4,0x0;/*0x000000000047802*/\n”
“MOV”
不相等?不。为什么
查找单词(“MOV”,f2)
不返回任何内容,而f2是包含
/*0040*/MOV R4,0x0;/*0x0000000000047802*/
?请参阅我的答案,但要点是
==
将要求字符串精确匹配。在给出的示例中,您正在执行我前面提到的比较。您能举一个示例说明
的值可能是什么吗?类似于
/*0040*/MOV R4,0x0;/*0x000000000047802*/
和MOV的I grep所以您是否在问为什么字符串
“/*0040*/MOV R4,0x0;/*0x000000000047802*/\n”
“MOV”
不相等?不。为什么
查找单词(“MOV”,f2)
不返回任何内容,而f2是包含
/*0040*/MOV R4,0x0;/*0x0000000000047802*/
?请参阅我的答案,但要点是
==
将要求字符串精确匹配。在给出的示例中,您正在执行我前面提到的比较。