如何忽略文件中文本的特定部分,并用python打印其余部分?
我是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" 我有使用字
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”
将出现错误匹配。