Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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/3/heroku/2.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_Regex_Dictionary Comprehension - Fatal编程技术网

如何忽略文件中文本的特定部分,并用python打印其余部分?

如何忽略文件中文本的特定部分,并用python打印其余部分?,python,python-3.x,regex,dictionary-comprehension,Python,Python 3.x,Regex,Dictionary Comprehension,我是python的初学者,试图编写一个脚本来忽略文本文件中的特定部分,并打印行的其余部分 输入文件: ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3 我试图用空格替换第一个冒号,并忽略第二个冒号后面跟一个数值的文本 输出 ValueError "invalid literal for int(12) with base" 我有使用字

我是python的初学者,试图编写一个脚本来忽略文本文件中的特定部分,并打印行的其余部分

输入文件:

ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3
我试图用空格替换第一个冒号,并忽略第二个冒号后面跟一个数值的文本

输出

ValueError  "invalid literal for int(12) with base"

我有使用字典的想法,但不知道如何实现它。如果有更有效的方法,请帮助我。任何帮助都将不胜感激。谢谢

您可以使用字符串替换和正则表达式操作:

import re
text = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
text = text.replace(":", " ", 1)
re.sub(r",\s+\d+:.*$", "", text)
输出为:

'ValueError  "invalid literal for int(12) with base"'

可以使用字符串替换和正则表达式操作:

import re
text = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
text = text.replace(":", " ", 1)
re.sub(r",\s+\d+:.*$", "", text)
输出为:

'ValueError  "invalid literal for int(12) with base"'

使用regex
re.match
str.join

Ex:

import re

s = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
print(" ".join(re.match(r'([A-Za-z]+): (\".*?\")', s).groups()))
ValueError "invalid literal for int(12) with base"

输出:

import re

s = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
print(" ".join(re.match(r'([A-Za-z]+): (\".*?\")', s).groups()))
ValueError "invalid literal for int(12) with base"

使用regex
re.match
str.join

Ex:

import re

s = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
print(" ".join(re.match(r'([A-Za-z]+): (\".*?\")', s).groups()))
ValueError "invalid literal for int(12) with base"

输出:

import re

s = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'
print(" ".join(re.match(r'([A-Za-z]+): (\".*?\")', s).groups()))
ValueError "invalid literal for int(12) with base"

不带正则表达式的
使用
split()。然后用逗号将其拆分,并返回第一个列表元素作为结果

" ".join(('ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'.split(":"))[:-1])  
这将返回:

ValueError "invalid literal for int(12) with base", 10
ValueError "invalid literal for int(12) with base"
然后可以再次拆分它并返回第一个元素:

('ValueError "invalid literal for int(12) with base", 10'.split(","))[0]  
这将返回:

ValueError "invalid literal for int(12) with base", 10
ValueError "invalid literal for int(12) with base"
综上所述:

error_string = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'  
error_string = " ".join((error_string.split(":"))[:-1])   
error_string = (error_string.split(","))[0]  
或者,如果您从文本文件中读取:

with open("file1.txt", "r") as fi:
    lines = fi.readlines()
    for line in lines:
        error_string = line.rstrip()
        error_string = " ".join((error_string.split(":"))[:-1])
        error_string = (error_string.split(","))[0]
        # Do stuff here with the result
        print(error_string)

不带正则表达式的
使用
split()。然后用逗号将其拆分,并返回第一个列表元素作为结果

" ".join(('ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'.split(":"))[:-1])  
这将返回:

ValueError "invalid literal for int(12) with base", 10
ValueError "invalid literal for int(12) with base"
然后可以再次拆分它并返回第一个元素:

('ValueError "invalid literal for int(12) with base", 10'.split(","))[0]  
这将返回:

ValueError "invalid literal for int(12) with base", 10
ValueError "invalid literal for int(12) with base"
综上所述:

error_string = 'ValueError: "invalid literal for int(12) with base", 10: This is an error in line 3'  
error_string = " ".join((error_string.split(":"))[:-1])   
error_string = (error_string.split(","))[0]  
或者,如果您从文本文件中读取:

with open("file1.txt", "r") as fi:
    lines = fi.readlines()
    for line in lines:
        error_string = line.rstrip()
        error_string = " ".join((error_string.split(":"))[:-1])
        error_string = (error_string.split(","))[0]
        # Do stuff here with the result
        print(error_string)


我认为您应该关注字符串操作(搜索、拆分、拼接);也许是正则表达式。还有更多的行可以作为例子吗?@sal事实上,即使一行中有多个冒号,我也试图忽略文本,仅当一个数字后跟一个冒号时。数字10是错误消息的重要部分,它表示输入不是一个有效的以10为基数的数字(即,它不仅仅由数字0到9组成)。Python也可以做其他的基础工作;例如,基数16是十六进制(0-9和A-F);也许是正则表达式。还有更多的行可以作为例子吗?@sal事实上,即使一行中有多个冒号,我也试图忽略文本,仅当一个数字后跟一个冒号时。数字10是错误消息的重要部分,它表示输入不是一个有效的以10为基数的数字(即,它不仅仅由数字0到9组成)。Python也可以做其他的基础工作;例如,基数16是十六进制(0-9和A-F)。错误的原因是什么,比如“对象没有属性替换”。上面的代码正在运行,这是错误的原因,比如“objecthasnoattributereplace”。上面的代码正在运行。如果文本在某个.txt文件中,并且有多行相同的文本,那么我们该怎么写呢?您可以逐行读取文本文件,然后处理每行并将其存储在列表中,或者对结果执行任何您需要执行的操作<代码>将open(“mytextfile.txt”、“r”)作为fi:
然后
lines=fi.readlines()
然后迭代行中的行:
然后
error\u string=line.rstrip()
显示列表没有属性拆分。那么这意味着什么呢?我在答案中添加了一部分,显示了你是否从文本文件中读取它。请确保您的语法完全正确,因为我已经测试了它,并且它正在工作。我感谢您的帮助。我现在知道了。如果文本在一个.txt文件中,有多行相同的文本,我们该如何写呢?你可以逐行读取文本文件,然后处理每行并将其存储在列表中,或者对结果执行任何需要执行的操作<代码>将open(“mytextfile.txt”、“r”)作为fi:然后
lines=fi.readlines()
然后迭代行中的行:然后
error\u string=line.rstrip()
显示列表没有属性拆分。那么这意味着什么呢?我在答案中添加了一部分,显示了你是否从文本文件中读取它。请确保您的语法完全正确,因为我已经测试了它,并且它正在工作。我感谢您的帮助。我现在明白了,这是最好的办法。我个人只需要匹配“ValueError”(+其他错误,如果需要),因为文件的一行,例如
这里的一些文本,a:b,然后更多的文本,和“quoted”字符串
,然后会出现错误匹配输出
这里的一些文本,一个“quoted”
。这就是方法。我个人只需要匹配“ValueError”(+其他错误,如果需要),因为文件的一行有一个例如
这里的一些文本,a:b,然后是更多的文本,和“quoted”字符串
,那么输出
这里的一些文本,一个“quoted”
将出现错误匹配。