我是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()
当我尝试在搜索中输入“加里”时,“是”不会出现。有人知道原因吗?谢谢
答案 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()