Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex_String_Regex Negation - Fatal编程技术网

Python 字符串删除

Python 字符串删除,python,regex,string,regex-negation,Python,Regex,String,Regex Negation,希望有人能帮助我。我是python新手,只是在学习。我想知道如何从字符串中删除不需要的字符 比如说, 我在文本文件中有一些字符串,例如“dogs op care 6A domain,cats op pv=2 domain 3,pig op care2 domain 3” 在这之后,我不需要任何东西,从op开始。也就是说,我想得到的只是“狗,猫,猪” 我将“op”视为所有这些字符串中的模式,因此尝试了下面的代码 import re f = open('animalsop.txt','r') s =

希望有人能帮助我。我是python新手,只是在学习。我想知道如何从字符串中删除不需要的字符

比如说,

我在文本文件中有一些字符串,例如“dogs op care 6A domain,cats op pv=2 domain 3,pig op care2 domain 3”

在这之后,我不需要任何东西,从op开始。也就是说,我想得到的只是“狗,猫,猪”

我将“op”视为所有这些字符串中的模式,因此尝试了下面的代码

import re
f = open('animalsop.txt','r')
s = f.read()
p = re.compile('op')
match = p.search(s)
print (s[:match.start()])
我得到的输出只是“狗”

为什么我不买猫和猪,因为它们也含有“op”

任何帮助都将不胜感激,因为我将使用代码来分析我得到的大量类似数据

上述代码源于


根据您提供的示例,我建议使用simple.split()字符串方法并选择第一部分,例如“op”之前的部分

有关更多信息,您可以迭代,例如,通过for循环

text = ["dogs op care 6A domain","cats op pv=2 domain 3", "pig op care2 domain 3"]

for part in text:
    animal = part.split(" op")[0]
    print(animal)
对于你的txt,它可能是

with open('animalsop.txt', 'r') as f:
    for line in f:
       animal = part.split(" op")[0]
       print(animal)

根据您提供的示例,我建议使用simple.split()字符串方法并选择第一部分,例如“op”之前的部分

有关更多信息,您可以迭代,例如,通过for循环

text = ["dogs op care 6A domain","cats op pv=2 domain 3", "pig op care2 domain 3"]

for part in text:
    animal = part.split(" op")[0]
    print(animal)
对于你的txt,它可能是

with open('animalsop.txt', 'r') as f:
    for line in f:
       animal = part.split(" op")[0]
       print(animal)

不使用正则表达式来解决问题可能是最简单的方法

假设名为
animalsop.txt
的文件如下所示:

dogs op care 6A domain
cats op pv=2 domain 3
pig op care2 domain 3
解决您的问题的pythonic解决方案如下所示:

with open('animalsop.txt', 'r') as f:
    for line in f:
        before_op = line.split(' op ')[0]
        print(before_op)
with open('animalsop.txt', 'r') as f:
    for line in f:
        for clause in line.split(','):
            before_op = clause.strip().split(' op')[0]
            print(before_op)
在python中打开文件的
with
构造的好处在于,它可以确保在完成时关闭文件

如果相反,则您的
animalsop.txt
文件只是一个长行,其中包含由逗号分隔的各种子句,如:

dogs op care 6A domain, cats op pv=2 domain 3, pig op care2 domain 3
然后你可以做一些类似的事情:

with open('animalsop.txt', 'r') as f:
    for line in f:
        before_op = line.split(' op ')[0]
        print(before_op)
with open('animalsop.txt', 'r') as f:
    for line in f:
        for clause in line.split(','):
            before_op = clause.strip().split(' op')[0]
            print(before_op)

(如果逗号后面有空格,则
子句.strip()
会删除空格)。

不使用正则表达式可能是解决问题的最简单方法

假设名为
animalsop.txt
的文件如下所示:

dogs op care 6A domain
cats op pv=2 domain 3
pig op care2 domain 3
解决您的问题的pythonic解决方案如下所示:

with open('animalsop.txt', 'r') as f:
    for line in f:
        before_op = line.split(' op ')[0]
        print(before_op)
with open('animalsop.txt', 'r') as f:
    for line in f:
        for clause in line.split(','):
            before_op = clause.strip().split(' op')[0]
            print(before_op)
在python中打开文件的
with
构造的好处在于,它可以确保在完成时关闭文件

如果相反,则您的
animalsop.txt
文件只是一个长行,其中包含由逗号分隔的各种子句,如:

dogs op care 6A domain, cats op pv=2 domain 3, pig op care2 domain 3
然后你可以做一些类似的事情:

with open('animalsop.txt', 'r') as f:
    for line in f:
        before_op = line.split(' op ')[0]
        print(before_op)
with open('animalsop.txt', 'r') as f:
    for line in f:
        for clause in line.split(','):
            before_op = clause.strip().split(' op')[0]
            print(before_op)

(如果逗号后面有空格,则
子句.strip()
将删除该空格)。

如果要使用正则表达式,可以使用:

re.findall('\w+?(?= op)', s)

['dogs', 'cats', 'pig']

如果要使用正则表达式,可以使用:

re.findall('\w+?(?= op)', s)

['dogs', 'cats', 'pig']

如果你只想要第一个单词,你可以使用 如果字符串是你的字符串

string='dog fgfdggf fgs, cat afgfg, pig fggag'
strings=string.split(', ')
newstring=strings[0].split(' ', 1)[0]
for stri in strings[1:]:
    newstring=newstring+', '+stri.split(' ', 1)[0]

如果你只想要第一个单词,你可以使用 如果字符串是你的字符串

string='dog fgfdggf fgs, cat afgfg, pig fggag'
strings=string.split(', ')
newstring=strings[0].split(' ', 1)[0]
for stri in strings[1:]:
    newstring=newstring+', '+stri.split(' ', 1)[0]


好的解决方案@Petr MatuskaMany谢谢Petr Matuska。我尝试了代码,得到了我想要的,但是,我想知道如何在引号中获得这样的字符串。输入text=[“dogs op care 6A domain”,“cats op pv=2 domain 3”,“pig op care2 domain 3”更容易,但可以建议如何将其放入一个巨大的文本文件中。非常感谢,你可以打开并阅读你的txt文件并逐行处理它-我编辑我的代码。好的解决方案@Petr MatuskaMany谢谢Petr Matuska。我尝试了代码,得到了我想要的,但是,我想知道如何在引号中获得这样的字符串。输入text=[“dogs op care 6A domain”,“cats op pv=2 domain 3”,“pig op care2 domain 3”更容易,但可以建议如何将其放入一个巨大的文本文件中。非常感谢,你可以打开并阅读你的txt文件,然后逐行处理——我编辑我的代码。我建议使用jimbob博士的答案,因为这里的一些其他答案可能会因输入而中断。例如,如果你有一个句子说
狗的机会
,这里的一些答案可能会出错。jimbob博士在两边寻找空间。如果你使用正则表达式,你应该使用
\bop\b
,这可以确保前面/后面的
op
是一个非单词字符(不是
a-zA-Z0-9
),或者“op”,它与jimbob博士的答案差不多,但在regexI中,我建议使用jimbob博士的答案,因为这里的一些其他答案可能会因输入而中断。例如,如果你有一个句子说
狗的机会
,这里的一些答案可能会出错。jimbob博士在两边寻找空间。如果你确实使用正则表达式,你应该使用
\bop\b
,这可以确保前面/后面的
op
是一个非单词字符(不是
a-zA-Z0-9
),或者'op',它与jimbob博士的答案非常相似,但在regexHi drjimbob中,非常感谢代码。我确实试过了,但输出结果看起来像是狗,猫,猪。任何建议,如果没有“op”,我怎么可能有狗,猫,猪。如果我弄错了,我很抱歉,但是当我尝试代码时,它只返回“dog”,而不是猫和猪。我做错什么了吗please@Tikku-你确定吗?如果我有一个由三行组成的文件:
dogs op care 6A domain
cats op pv=2 domain 3
pig op care2 domain 3
,在一个名为
animalsop.txt
的文件中,你粘贴上面的代码片段,你会在三行上分别得到
dogs
cats
,和
pig
,非常感谢你的代码。我确实试过了,但输出结果看起来像是狗,猫,猪。任何建议,如果没有“op”,我怎么可能有狗,猫,猪。如果我弄错了,我很抱歉,但是当我尝试代码时,它只返回“dog”,而不是猫和猪。我做错什么了吗please@Tikku-你确定吗?如果我有一个由三行组成的文件:
dogs op care 6A domain
cats op pv=2 domain 3
pig op care2 domain 3
,在一个名为
animalsop.txt
的文件中,粘贴上面的代码片段,就会得到
dogs
cats