我想要一个将其转换为正则表达式:
91009-01-28-00 Maximum (c/s)................ 1543.5
对此:
91009-01-28-00 1543.5
因此,基本上,正则表达式可以转义字母,空格,正斜杠和方括号。
到目前为止,我已经编写了以下python代码:
with open('lcstats.txt', 'r') as lcstats_file:
with open (lcstats_full_path + '_lcstats_full.txt', "a+") as lcstats_full_file:
lcstats_full_file.write(obsid )
for line in lcstats_file.readlines():
if not re.search(r'Maximum [(c/s)]', line):
continue
line = (re.sub(**REGEX**,'',line))
lcstats_full_file.write(line)
答案 0 :(得分:2)
您似乎想拥有字符串的第一部分和最后一部分。如果每行都是这种情况,那么将其相应地拆分可能会有所帮助,如以下代码所示
import re
line = "91009-01-28-00 Maximum (c/s) ................ 1543.5"
line=line.split(' ')
line=line[0]+' '+ line[-1]
print(line)
输出:
91009-01-28-00 1543.5
答案 1 :(得分:1)
在您的代码中,您正在使用搜索来检查是否可以匹配Maximum (c/s)
,然后要使用正则表达式将其删除。
我认为您的正则表达式Maximum [(c/s)]
是Maximum \(c/s\)
。方括号使它成为捕获组中的character class和(c/s)
捕获c/s
,如果您只想匹配它,则不需要。
您可以做的是匹配Maximum (c/s)
并使用字符类[ .]+
匹配空白或逗号一次或多次,并替换为空字符串。
import re
s = "91009-01-28-00 Maximum (c/s)................ 1543.5"
print( re.sub(r"Maximum \(c/s\)[ .]+", "", s))
答案 2 :(得分:0)
尝试使用此正则表达式/\s[^0-9]+/
,它将与第一个空格匹配,后跟1个或多个非数字字符。您需要在替换字符串中添加一个空格,以使剩余数据的两位分开。
答案 3 :(得分:0)
正则表达式:
((?<!\d)\D)
匹配所有非数字\D
,后面没有数字\d