首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docstring阻塞elif语句

docstring阻塞elif语句
EN

Stack Overflow用户
提问于 2013-08-31 14:20:46
回答 1查看 506关注 0票数 0

让我跳过我所拥有的确切代码:这是short模块

代码语言:javascript
复制
class SentenceSplitter:

def __init__(self, filename=None):
    self._raw_text = self.raw_text(filename)
    self._sentences = self.to_sentences()


def raw_text(self, filename):
    text = ''
    with open(filename, 'r') as file:
        for line in file.readlines():
            line = line.strip()
            text += ''.join(line.replace(line, line+' '))
    file.close()
    text = text.strip() # Deal with the last whitespace
    return text

def to_sentences(self):
    """ Sentence boundaries occur at '.', '!', '?' except that,
    there are some not-sentence boundaries that
    may occur before/after the period.
    """
    raw_text = self._raw_text
    sentences = []
    sentence = ''
    boundary = None

    for char in raw_text:
        sentence += ''.join(char)
        if char == '!' or char == '?':
            sentences.append(sentence)
            sentence = ''

        """ The sign -> refers to 'followed by' """
        elif char == '.':
            i = raw_text.index(char) # slicing previous/following characters
            boundary = True

        if boundary:
            sentences.append(sentence)
            sentence = ''

    return sentences

主要的是:

代码语言:javascript
复制
import textchange

ss = textchange.SentenceSplitter(filename='text.txt')
print(ss._sentences)

第一个if语句后的文档字符串

代码语言:javascript
复制
""" The sign -> refers to 'followed by' """

我把它注释掉了,程序运行了,否则就不会了。elif语句中有更多的代码,但在确保它仍然抛出错误后将其删除。下面是回溯:

代码语言:javascript
复制
Traceback (most recent call last):
File "D:\Programs\Python 3.3.2\Tutorials\46 Simple Python Exercises.py", line 26, in        
<module>
import textchange
File "D:\Programs\Python 3.3.2\Tutorials\textchange.py", line 51
elif char == '.':
   ^
SyntaxError: invalid syntax
EN

回答 1

Stack Overflow用户

发布于 2013-08-31 15:50:19

Docstring只是在函数开始处找到的字符串文字。它们仍然必须遵循缩进规则。

您的字符串没有正确地缩进到elif块中;通过在前面从if块中缩进,您完全结束了if-elif-else块,并且不允许跟随任何elif

使用常规的、普通的注释,以#开头的行;仅包含注释的行不受缩排规则的约束:

代码语言:javascript
复制
if char == '!' or char == '?':
    sentences.append(sentence)
    sentence = ''

# The sign -> refers to 'followed by'
elif char == '.':
    i = raw_text.index(char) # slicing previous/following characters
    boundary = True

或者缩进字符串(它仍然完全由Python作为代码执行,但不会被赋值,因此再次被丢弃):

代码语言:javascript
复制
if char == '!' or char == '?':
    sentences.append(sentence)
    sentence = ''

elif char == '.':
    """ The sign -> refers to 'followed by' """
    i = raw_text.index(char) # slicing previous/following characters
    boundary = True
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18545178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档