在.txt文件中查找特定文本

时间:2018-12-31 06:10:58

标签: python

我是Python新手,对于一个简单的项目,我尝试使用.txt文件制作一个简单的程序。

示例文本文件如下:

Name = Garry
Age = 20

然后,我写了这个

Search = input("Whose age do you want to know? ")

    f = open("text exe.txt", "r")
    reviews = f.readlines()
    this_line = reviews[0].split(" = ")
    if this_line[1] == Search:
        print("yes")
    f.close()

当我尝试在搜索中输入“加里”时,“是”不会出现。有人知道原因吗?谢谢

5 个答案:

答案 0 :(得分:1)

欢迎光临!比较字符串可能非常棘手:this_line[1]不仅包含“ Garry”,还包含e行分隔符“ \ r \ n”。

尽管“ Garry”(您的输入)和“ Garry \ r \ n”(来自您的文件)在我们看来是相同的,但==运算符认为它们是不同的。

下面的解决方案删除单词周围的空格和其他不可见字符,从而产生所需的输出:

Search = input("Whose age do you want to know? ")

f = open("text exe.txt", "r")
reviews = f.readlines()
this_line = reviews[0].split(" = ")
if this_line[1].strip() == Search.strip():
    print("yes")
f.close()

答案 1 :(得分:0)

这可以解决您的问题。

Search = input("Whose age do you want to know? ")
f = open("test.txt", "r")
reviews = f.readlines()
reviews = [x.strip() for x in reviews] 
# print(reviews)
this_line = reviews[0].split(" = ")
if this_line[1] == Search:
    print("yes")
    f.close()

答案 2 :(得分:0)

在txt文件中,行之间用\n分隔。如果打印this_line,它将是['Name = Gary\n', 'Age = 20\n']。因此,您应该用空字符串替换“ \ n”。 if this_line[1].replace("\n","") == Search:将起作用。

答案 3 :(得分:0)

为什么可以通过这种方式处理列表,拆分和循环?在学习python的同时,您会处理很多事情,同时,这是一个不错的干净解决方案:

  public class GuestFrame extends javax.swing.JFrame {
    private static List<String> list = new ArrayList<String>();

    public GuestFrame(){
       initComponents();    

    }

    public static List<String> getList() {
       return list;
    }
 }

答案 4 :(得分:-3)

尝试

_INPUT_FILE = 'input.txt'

_OUTPUT_FILE = 'output.txt'

def main(): 

pattern = re.compile('^(.*)' +re.escape(sys.argv[1]) + '(.*)$') 

o = open(_OUTPUT_FILE, 'w') 

with open(_INPUT_FILE) as f: 

for line in f: 

match = pattern.match(line) 

if match is not None: 

o.write(match.group(1) + match.group(2) + os.linesep)

o.close() 

if __name__ == '__main__': 

main()
相关问题