为什么得到的输出示例(1)还保留着
fi=open("论语.txt","r",encoding="utf-8")fo=open("论语—原文—输出示例.txt","w")
flag=True
for i in fi:
if i=="(":
flag=False
if i==")":
flag=True
continue
if flag:
fo.write(i)
fi.close()
fo.close()
根据你提供的代码,它的功能是将一个文件中的内容按行读取,并将不包含括号的行写入另一个文件。
代码中的flag变量用来标记是否需要写入当前的行。开始时,flag被设置为True,表示需要写入内容;当遇到括号时,flag会被置为False,表示在括号中的内容不需要写入;再次遇到括号时,flag又被置为True。
这样设计的目的是过滤掉括号中的内容,只保留不含括号的行。然后将这些行写入到另一个文件中。
如果你的输出示例(1)仍然包含括号,可能是因为输入文件中存在其他类型的括号字符,代码没有进行处理。你可以检查一下输入文件中是否存在其他类型的括号字符,如方括号 [ ]、尖括号 < > 等。如果存在其他类型的括号,你可以相应地进行修改代码,使其适配所有类型的括号。
希望能解答你的疑问!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 这段代码的作用是从一个名为"论语.txt"的文件中读取内容,并将内容写入一个名为"论语—原文—输出示例.txt"的文件中。在写入过程中,会忽略括号中的内容。
在这段代码中,变量 flag 被用来表示是否需要写入当前读取的字符。初始状态下, flag 被设置为 True ,表示需要写入字符。当读取到左括号"("时, flag 被设置为 False ,表示不需要写入字符。当读取到右括号")"时, flag 被设置为 True ,表示需要写入字符。在每次循环中,如果 flag 为 True ,则将当前字符写入输出文件中。
所以,这段代码的目的是将"论语.txt"文件中除了括号内的内容以外的所有内容写入到"论语—原文—输出示例.txt"文件中。 在for循环开头加入如下语句:
print(i,type(i))
输出结果:
考虑是否就是(1)
<class 'str'>
2.考虑是否就是
<class 'str'>
<class 'str'>
可见for循环是按行读取文件。
解决方案:使用read()方法读取整个文件,返回的是一个字符串
fi = open("论语.txt","r",encoding="utf-8")
fo = open("论语—原文—输出示例.txt","w")
string = fi.read()
flag = True
for i in string:
if i == "(":
flag = False
if i == ")":
flag = True
continue
if flag:
fo.write(i)
fi.close()
fo.close() smallwh 发表于 2023-8-18 19:11
在for循环开头加入如下语句:
输出结果:
运行还是存在(1{:10_266:}) 本帖最后由 smallwh 于 2023-8-19 14:46 编辑
在for循环开头加入如下语句:
print(i,type(i))
这个只是用来排错。
正确的代码是下面的(我试了,不应该存在(1)才对啊)
解决方案:使用read()方法读取整个文件,返回的是一个字符串
fi = open("论语.txt","r",encoding="utf-8")
fo = open("论语—原文—输出示例.txt","w")
string = fi.read()
flag = True
…………
这是我运行后的文件截图,没有(1)了呀:
smallwh 发表于 2023-8-19 14:42
这个只是用来排错。
正确的代码是下面的(我试了,不应该存在(1)才对啊)
没问题了,感谢感谢
页:
[1]