作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,这个练习说:创建一个 Mad Libs 程序,该程序读取文本文件,并允许用户在文本文件中出现形容词、名词、副词或动词的任何位置添加自己的文本。
textfile = 形容词 Pandas 走到名词,然后走到动词。附近的名词是未受到这些事件的影响。
到目前为止我所拥有的是:
import re
#filename = input('Input the Filename: ')
with open('madlibs.txt') as file:
content = file.read()
file.close()
regex = re.compile(r'ADJECTIVE|NOUN|VERB|ADVERB')
#regex = re.compile('[A-Z]{3,}')
matches = regex.findall(content)
#newWord = []
for word in matches:
user_input = input('Enter %s: ' % word)
# newWord.append(user_input)
new_content = content.replace(word,user_input,1)
print(new_content)
我的输入是:
Enter ADJECTIVE: heavy
Enter NOUN: whale
Enter VERB: runs
Enter NOUN: door
我的输出:
The ADJECTIVE panda walked to the door and then VERB. A nearby door was
unnafected by these events.
有人可以向我解释一下我做错了什么吗?由于某种原因,我似乎无法更改形容词和动词,我还尝试了大写的注释正则表达式,它的作用相同,所以问题出在其他地方。
最佳答案
您需要更改内容
,但因为您没有更改,所以它会覆盖您的更改,直到最后一个字:
for word in matches:
user_input = input('Enter %s: ' % word)
content = content.replace(word,user_input) # overwrite content here
print(content)
或者,如果您希望保持内容
不变:
new_content = content
for word in matches:
user_input = input('Enter %s: ' % word)
new_content = new_content.replace(word,user_input) # overwrite new_content here
print(new_content)
Python 中的字符串是不可变的,这意味着它们不会就地更改,而是必须重新分配:
somestring = "this is a string"
for word in ["is", "a"]:
newstring = somestring.replace(word, "aaaa")
print(newstring)
# this is aaaa string
print(somestring)
# this is a string
请注意,somestring
仍然是原始值。第一个replace
确实发生了,只是在重新分配somestring.replace("a", "aaaa")
的结果时被覆盖。
分为步骤:
somestring = "this is a string"
newstring = somestring.replace("is", "aaaa")
# this aaaa a string
newstring = somestring.replace("a", "aaaa")
# this is aaaa string
关于python - 用 python 自动化那些无聊的事情 Chapter_8 MadLibs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56264834/
我是一名优秀的程序员,十分优秀!