您好我正在学习Python, 我一直在尝试the "Count Green Eggs and Ham" project。
我遇到的问题是我无法让程序识别 Sam-i-am 并将其替换为 Sam-I-am 。
到目前为止我所做的是(忽略评论):
f = open('green_eggs_and_ham_text_with_errors.txt')
g = open('greeneggsandhamfixed.txt', 'w')
def CapitalEye(a):
lstitm = list(a)
a=''
for ind, ltr in enumerate(lstitm):
if ltr == 'i':
lstitm[ind] = 'I'
for i in lstitm:
a += i
for line in f:
splt = line.split(' ')
for i, itm in enumerate(splt):
if itm == 'i':
splt[i]='I'
elif itm == 'Sam-i-am':
CapitalEye(itm)
splt[i]=itm
elif itm == 'Sam-i-am!':
CapitalEye(itm)
splt[i]=itm
elif itm == 'Sam-i-am.':
CapitalEye(itm)
splt[i]=itm
elif itm == 'Sam-i-am?':
CapitalEye(itm)
splt[i]=itm
elif itm == 'Sam-i-am,':
CapitalEye(itm)
splt[i]=itm
#print(splt)
print(' '.join(splt))
#splt = ' '.join(splt)
#g.write(splt)
#g.close()
#f.close()
答案 0 :(得分:1)
尝试使用替换方法
drop table emp purge;
drop table dept purge;
CREATE TABLE dept
(
deptno INTEGER PRIMARY KEY
);
CREATE TABLE emp
(
empno NUMBER (4, 0)
, ename VARCHAR2 (10)
, job VARCHAR2 (9)
, mgr NUMBER (4, 0)
, hiredate DATE
, sal NUMBER (7, 2)
, comm NUMBER (7, 2)
, deptno NUMBER (2, 0)
, CONSTRAINT pk_emp PRIMARY KEY (empno)
, CONSTRAINT fk_deptno FOREIGN KEY (deptno) REFERENCES dept (deptno)
);
CREATE or replace PACKAGE emp_pkg
AS
TYPE name_array_t IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGER;
FUNCTION upd (p_empno IN emp.empno%TYPE)
RETURN name_array_t;
PROCEDURE upd (
p_empno IN emp.empno%TYPE
, p_names OUT name_array_t
);
END emp_pkg;
CREATE or replace PACKAGE BODY emp_pkg
AS
FUNCTION upd (p_empno IN emp.empno%TYPE)
RETURN name_array_t
AS
l_names name_array_t;
BEGIN
UPDATE emp
SET empno = empno
WHERE deptno = 20
RETURNING ename
BULK COLLECT INTO l_names;
RETURN l_names;
END upd;
PROCEDURE upd (
p_empno IN emp.empno%TYPE
, p_names OUT name_array_t
)
AS
BEGIN
p_names := upd (p_empno);
END upd;
END emp_pkg;
答案 1 :(得分:0)
有一些事情使得这比必要的更难。
我建议尝试搜索所有的实例
i
(我之后的空间)
和
-i-
def CapitalEye(a):
a = a.replace('i ', 'I ')
a = a.replace('-i-', '-I-')
return a
输入a
将是文本文件,在这种情况下,我只是使用原始文本
CapitalEye("""
i am Sam
Sam i am
That Sam-i-am!
That Sam-i-am!
i do not like that Sam-i-am!
...
""")
<小时/>
您需要包含一个mode参数,以指定您是在读取还是写入文件。这里有一些可用的模式 模式是:
def CapitalEye(a): a = a.replace('i ', 'I ') a = a.replace('-i-', '-I-') return a # write file to variable file1 = open("testfile.txt", "r") file2 = open("testfile2.txt", "w") file2.write(CapitalEye(file1.read()))
答案 2 :(得分:0)
正则表达式非常适合这种类型的东西
import re
a = "sam-i-am"
b = "so i was going to go to see her but i didn't"
re.sub("-i-","-I-", a)
sam-I-am
#use [^a-z] to match only non a-z characters on both sides (i.e. spaces/punctuation)
re.sub("[^a-z]i[^a-z]"," I ", b)
so I was going to go to see her but I didn't