我不想一次打印文件的所有内容,因为我稍后会收集这些文字。这是我的代码:
file = open('file analysis.txt', 'r')
chars = ''
for line in file:
for ch in file:
chars = chars + ch
if ch == ' ':
print(chars)
file.close()
将在学校停留几个小时,因此可能无法立即回答问题。
答案 0 :(得分:0)
你得到的几乎是正确的,如果你想迭代文件的行,然后遍历一行中的每个字符,请将你的第二个for
更改为for ch in line:
。
正如kuro在评论中提到的那样,您当前只在遇到空格字符而不是换行符时打印读取的单词。您print
现在的工作方式是在每个空格后打印所有读取的单词,因此示例输出可能如下所示:
Lorem
Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet,
Lorem ipsum dolor sit amet, consetetur
Lorem ipsum dolor sit amet, consetetur sadipscing
如果您只想打印遇到的每个新单词,可能需要在打印后重置chars = ''
。要在每个单词后删除换行符,您可以使用print(chars, end='')
。
在with
语句中打开文件也更安全,这样就可以为您处理关闭文件。
然后你的代码看起来像这样:
with open('file analysis.txt', 'r') as file:
chars = ''
for line in file:
for ch in line:
chars = chars + ch
if ch == ' ':
print(chars, end='')
chars = ''
这将提供以下输出:
Lorem ipsum dolor sit amet, consetetur sadipscing
请注意,您只能在空格处打印,因此当您的最后一个单词后面没有空格时,它将被读取但不会被打印。
答案 1 :(得分:0)
一些事情。
首先,而不是使用file.open()
和file.close()
,您应该使用
with open('file analysis.txt', 'r') as f:
会自动为您关闭文件。
另外,您应该使用for ch in line:
而不是for ch in file:
因为要打印行中的每个字符,而不是文件中的每一行两次。 同样,您希望每次打印后将chars
变量重置为空字符串,这样就不会多次打印相同的字词。 最后,python的print()
函数默认在每个print语句后创建一个换行符。您可以通过使用空字符串替换行尾字符的print(string, end='')
来避免这种情况。
考虑到所有这些因素,您的代码变为:
with open('file analysis.txt', 'r') as f:
chars = ''
for line in f:
for ch in line:
chars += ch
if ch == ' ':
print(chars, end='')
chars = ''
如果您有兴趣详细了解print(string, end='')
功能,请查看positional arguments vs keyword arguments有关with ... as语句的详细信息,请查看here