找不到正确的字符串结尾

时间:2014-11-15 09:44:46

标签: python string

我从文件中获取文本字符串。之后我在字符串上做了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

3 个答案:

答案 0 :(得分:1)

写作的pythonic方式:

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')

将为您提供一个供您处理的单词列表。