我从文件中获取文本字符串。之后我在字符串上做了for
循环(我必须保存单词),除了文件中的最后一个单词之外,一切正常,如果之后没有分隔符。
我的代码:
for symbol in text:
if symbol == ' ' or symbol == '-' or symbol == ',' or symbol == '\n':
lastWord = ''.join(tmpList)
del tmpList[:]
print lastWord
else:
tmpList.append(symbol)
我认为Python中没有NULL终止。也许我正试图用C语言解决这个问题,而这样的Python算法是不正确的?
我添加了count变量,还有一个检查“else”块,它运行正常。我想知道它是否正确,或者我可以在python中做同样的事情。 Else-block现在看起来像:
else:
tmpList.append(symbol)
count += 1
if count == len(text):
lastWord = ''.join(tmpList)
del tmpList[:]
print lastWord
答案 0 :(得分:1)
if symbol == ' ' or symbol == '-' or symbol == ',' or symbol == '\n':
是:
if symbol in ' -,\n':
我认为最好告诉你想做什么,你是否只想打印文字减去'',' - ',',','\ n'?
如果是,则pythonic方式为:
for char in '-,\n':
text = text.replace(char, ' ')
for word in text.split():
print(word)
如果字符串很大或性能很重要,请查看re模块,它非常适合这类工作(查看拆分功能)
答案 1 :(得分:0)
您的代码会收集tmpList
中的符号,并在遇到分隔符时将其清空。查找最后一个单词的一种方法是在循环完成时检查tmpList
是否包含任何内容:
for symbol in text:
if symbol == ' ' or symbol == '-' or symbol == ',' or symbol == '\n':
lastWord = ''.join(tmpList)
del tmpList[:]
print lastWord
else:
tmpList.append(symbol)
if tmpList:
lastWord = ''.join(tmpList)
del tmpList[:]
print lastWord
但显然Ludovic的答案有一个更清洁的解决方案。
答案 2 :(得分:0)
更简单的解决方案可能是使用split()
功能。
words = text.split(' -,\n')
将为您提供一个供您处理的单词列表。