Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-捕获带或不带特定字符的字符串_Python_Python 3.x - Fatal编程技术网

Python-捕获带或不带特定字符的字符串

Python-捕获带或不带特定字符的字符串,python,python-3.x,Python,Python 3.x,我试着在一个特定的单词后面捕捉这个句子。在我的代码中,每个句子都是不同的,这些句子不一定要有这个特定的词来分割。如果这个词没有出现,我只需要像空白字符串或列表 例1:工作 my_string="Python is a amazing programming language" print(my_string.split("amazing",1)[1]) programming language 例2: my_string="Java is also a programming langua

我试着在一个特定的单词后面捕捉这个句子。在我的代码中,每个句子都是不同的,这些句子不一定要有这个特定的词来分割。如果这个词没有出现,我只需要像空白字符串或列表

例1:工作

my_string="Python is a amazing programming language"
print(my_string.split("amazing",1)[1])

 programming language
例2:

my_string="Java is also a programming language."
print(my_string.split("amazing",1)[1]) # amazing word doesn't appear in the sentence. 
Error: IndexError: list index out of range
需要输出:空字符串或列表..等

我试过这样的方法,但还是失败了

my_string.split("amazing",1)[1] if my_string.split("amazing",1)[1] == None else my_string.split("amazing",1)[1]

你在这里有一些选择。您可以拆分并检查结果:

tmp = my_string.split("amazing", 1)
result = tmp[1] if len(tmp) > 1 else ''
或者,您可以在前面检查安全壳:

result = my_string.split("amazing", 1)[1] if 'amazing' in my_string else ''
如果大多数句子都匹配,那么第一个选项更有效,如果大多数句子都不匹配,那么第二个选项更有效

与第一个类似的另一个选择是

result = my_string.split("amazing", 1)[-1]
if result == my_string:
    result = ''
在所有情况下,考虑做等同于

的事情。
result = result.lstrip()

使用
.split()
参数时,您可以指定要将列表的哪一部分用于整数或切片。如果要检查字符串中的特定单词,可以执行以下操作:

my_str = "Python is cool"
my_str_list = my_str.split()
if 'cool' in my_str_list:
    print(my_str)`

output:
"Python is cool"

否则,您可以在字符串列表中运行for循环,以检查它是否在多个字符串中找到该单词。

调用index-1而不是调用index 1。这将调用列表中的最后一项

my_string="Java is also a programming language."
print(my_string.split("amazing",1)[1])

返回“编程语言”。

如果my_string中的“Azing”
…如果
Azing
没有出现在句子中,则
split
返回一个只有一个元素的列表--没有第二个元素,程序将崩溃。您必须首先检查目标单词是否出现。
如果您的\u字符串中有特定的\u单词:返回您的\u字符串。拆分(特定的\u单词)[1]否则:返回[]
这就是您想要完成的吗?@kindall谢谢!这有助于解决我的问题在回答之前和之后使用三个反勾号生成代码块=)“``搜索堆栈溢出标记/标记下降这根本不能满足问题的要求您可能应该显示符合您自己建议的代码。此外,如果找不到,它也不会返回空。