2013-01-03 91 views
1

剝離了在Python代碼我讀到這樣的: Stripping everything but alphanumeric chars from a string in Python使用「應用re.sub」

這: Python: Strip everything but spaces and alphanumeric

聽不太懂,但我想我自己的代碼,它現在有點看起來是這樣的:

import re 

decrypt = str(open("crypt.txt")) 

crypt = re.sub(r'([^\s\w]|_)+', '', decrypt) 

print(crypt) 

當我運行該腳本,它回來了這樣的回答: C:\用戶\阿德里安\桌面\蟒蛇>蟒蛇tick.py ioTextIOWrapper namecrypttxt莫代爾encodingcp1252

我試圖從文檔中獲得了所有的額外代碼,並只保留數字和字母,文件下面的文本,可以發現裏面:http://pastebin.com/Hj3SjhxC

我想解決這裏的任務: http://www.pythonchallenge.com/pc/def/ocr.html

任何人都知道「ioTextIraprapper namecrypttxt moder encodingcp1252」是什麼意思? 我應該如何格式化代碼以正確地將它從除字母和數字之外的所有東西中剝離出來?

真誠

+1

你應該也與此標記'regex' – jackcogdill

回答

3

你可以只搜索數字字母的字符來代替。就像這樣:

print ''.join(re.findall('[A-Za-z]', decrypt)) 

而且你也想:

decrypt = open("crypt.txt").read() 
+0

哪裏是「打印'。加入(re.findall(「[A-ZA -z]',解密))「部分進入我的代碼? 感謝您修復打開的文件問題,我甚至不知道我有:) –

+0

嗯,除了去除字母之外的所有東西,只要查找字母本身就很容易。 – jackcogdill

+0

[A-Z]表示從A到Z的任何字母,並且與a-z相同,但小寫字母 – jackcogdill

5

str(open("file.txt"))沒有做什麼,你認爲它。 open()返回一個文件對象。 str爲您提供該文件對象的字符串表示,而不是該文件的內容。如果你想讀取文件的內容使用open("file.txt").read()

或者,更安全,使用with聲明:

with open("file.txt") as f: 
    decrypt = f.read() 
crypt = ... 
# etc.