我想打印文本中包含的一个或多个“关键词”。
我希望按照它们的编写顺序打印它们。因此var1
将是Python,var2
将是Java,var3
将是Rust。我需要能够单独地处理这些变量。也许我需要split()
,而不是像这样
如果我尝试打印x
,我会得到Java, Python, Rust
(它们不是按顺序排列的)
我需要Python, Java, Rust
,确切的顺序应该会自动设置
我怎么才能得到这个?
text = "My favorite languages are Python and Java. I like less Rust"
keywords = ["C#", "JAVA", "PHP", "PYTHON", "RUST", "JAVASCRIPT"]
matches = [x for x in keywords if x in text.upper()]
for x in matches:
print("test x: ", x) #Java, Python, Rust
var1= x
var2= x
var3= x
print(var1)
print(var2)
print(var3)
6条答案
按热度按时间7eumitmz1#
@aesh
我浏览了上面的几个答案,我意识到当一个简单的苍蝇拍就足够的时候,人们是多么快地带进一头大象来杀死一只老鼠。
下面是一个小的简洁和可折叠的脚本,同时试图保留动态的一面。
打印出来
rqcrx0a62#
我认为正则表达式是最好的方法。
输出:
这将打印python两次,你没有指定这是否是期望的行为。
z5btuh9x3#
由于搜索的是完美匹配,我建议使用一个没有
re
的解决方案。虽然re
是标准库-因此应该使用它。使用
__init__
方法,您可以根据ignore_case
和remove_signs
预先准备关键字列表。__contains__
dunder方法通过in
运算符易于使用。使用标志参数
ignore_case
,remove_signs
,return_key
,您可以确定是否应忽略大小写,删除右端的符号以及单词是否应分别在文本中找到或在关键字中指定。n8ghc7c14#
对于你的
var1
,var2
等问题,通过解构在Python中使用多重赋值:如果你想把它们打印出来:
5ssjco0h5#
为了让我的解决方案尽可能与你的相似,我认为这是最好的方法(OFC不使用其他库)。
如果你想创建“动态变量”,我不认为你可以,你必须声明它们。出于这个原因,最好有一个列表,当你需要的时候,访问/迭代到你需要的值。
我希望对你有所帮助
编辑:可以动态赋值变量但不是“好用”
weylhg0b6#
所以,我做了一些测试,我认为这将是最容易的工作:
text =“我最喜欢的语言是Python和Java。我不喜欢Rust”
keywords = [“C#",“JAVA”,“PHP”,“PYTHON”,“JAVASCRIPT”,“RUST”]
matches = [x for x in keywords if x in text.upper()]
对于匹配中的x:
希望这有帮助!