2015-06-21 21 views
0

我想编写一个使用RegEx删除Project Gutenberg文本的头部的函数。用RegEx替代Project Gutenberg文本的头部函数的定义

到目前为止,我做了以下(不作为功能),运行良好: (德古拉是吸血鬼小说从Projekt的古登堡一textstring)

pattern = r'START OF THIS PROJECT GUTENBERG EBOOK (.)+?\*\*\*' 

draculalist = re.split(pattern, dracula, maxsplit=1) 
draculalist.pop(0) 
dracula = ''.join(draculalist) 
print dracula[:100] 

- >运行良好,以及:

headend = re.search(pattern, dracula).end() 
dracula = dracula[headend:] 

然后我试图写一个函数:

def head_removal(text): 
    """Entfernung der Meta-Daten im Kopf der Projekt Gutenberg Texte""" 
    headend = re.search(pattern, text).end() 
    text = text[headend:] 

的问题是,当我使用的功能有一定的文字像

head_removal(dracula) 

它不会改变字符串“吸血鬼”,因为它是不可改变的,当然,但给了我这有dracula-对象“文本”没有标题的文字。 所以我与分裂串入一个列表中的其他代码尝试过了,不是再次加入它:

pattern = r'START OF THIS PROJECT GUTENBERG EBOOK (.)+?\*\*\*' 

def head_removal2(texts): 
    """Entfernung der Meta-Daten im Kopf der Projekt Gutenberg Texte""" 
    liste = re.split(pattern, texts, maxsplit=1) 
    liste.pop(0) 
    texts = ''.join(liste) 

无法正常工作或为 head_removal(吸血鬼) 打印德古拉[100]

任何想法如何编写该功能?

回答

0

Python是“pass by value”,这意味着你不能在你的函数中“分配”一个值到原始引用 - 你必须从函数返回结果并将其赋值回原始字符串。

def modify_test(dracula): 
    pattern = r'START OF THIS PROJECT GUTENBERG EBOOK (.)+?\*\*\*' 
    draculalist = re.split(pattern, dracula, maxsplit=1) 
    draculalist.pop(0) 
    dracula = ''.join(draculalist) 
    return dracula[:100] 

# call it and re-assign: 
dracula = modify_test(dracula) 
相关问题