去掉标点符号
我需要把去掉标点符号的功能加进来,这样文件里的文本就能在打印时不带标点。比如说,有一行:"你今天好吗?"
到目前为止,它打印出来是:
"how
are
you
today?"
但我想要的打印结果是:
how
are
you
today
我的代码看起来是这样的:
from scanner import *
import sys
import string
def processFile(filename):
s = Scanner(filename)
token = s.readtoken()
array = []
while token != "":
newToken = ""
for i in range(0,len(token),1):
newchar = RawChar(token[i])
newToken = newToken + newchar
array.append(newToken)
token = s.readtoken()
s.close()
return array
def eachLine(tokens):
for i in range(0,len(tokens),1):
pun(tokens[i])
print(tokens[i])
return
def pun(string):
punctuation = ["`","~","!","@","#","$","%","^","&","*","(",")","_","-","+","=","{","[","}","]","|",":",";","\"","'","<",",",">",".","?","/"]
for i in string:
newString = ""
if i not in string:
newString = newString + i
return newString
def RawChar(char):
if char == "A":
char = "a"
elif char == "B":
char = "b"
elif char == "C":
char = "c"
elif char == "D":
char = "d"
elif char == "E":
char = "e"
elif char == "F":
char = "f"
elif char == "G":
char = "g"
elif char == "H":
char = "h"
elif char == "I":
char = "i"
elif char == "J":
char = "j"
elif char == "K":
char = "k"
elif char == "L":
char = "l"
elif char == "M":
char = "m"
elif char == "N":
char = "n"
elif char == "O":
char = "o"
elif char == "P":
char = "p"
elif char == "Q":
char = "q"
elif char == "R":
char = "r"
elif char == "S":
char = "s"
elif char == "T":
char = "t"
elif char == "U":
char = "u"
elif char == "V":
char = "v"
elif char == "W":
char = "w"
elif char == "X":
char = "x"
elif char == "Y":
char = "y"
elif char == "Z":
char = "z"
return char
def main():
newForm = processFile(sys.argv[1])
eachLine(newForm)
main()
有没有建议我应该把def pun(string)
放在哪里?
3 个回答
0
import string
s = '"Right now!" she shouted, and hands fluttered in the air - amid a few cheers - for about two minutes.'
x = "".join([c for c in s if or c not in string.punctuation])
这段代码的意思是……
首先,它定义了一个变量,这个变量可以用来存储一些信息。接着,它可能会进行一些操作,比如计算、比较或者改变这个变量的值。
然后,代码可能会有一些条件判断,比如“如果这个条件成立,就执行某个操作”,这样可以让程序根据不同的情况做出不同的反应。
最后,代码可能会输出一些结果,或者把处理后的信息展示给用户。
总之,这段代码的主要目的是通过一系列的指令来完成特定的任务。
1
你可以通过使用这篇StackOverflow文章中介绍的方法,显著提高去掉标点符号的效果。然后再用s.lower()把字符串s转换成小写字母。
7
要从一个字符串中去掉标点符号,可以使用 str.translate
这个方法:
In [124]: import string
In [126]: string.punctuation
Out[126]: '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
In [127]: '"How are you today?"'.translate(None, string.punctuation)
Out[127]: 'How are you today'