Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/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_Regex - Fatal编程技术网

从python中的字符串获取字符

从python中的字符串获取字符,python,regex,Python,Regex,我有一个由多个块组成的文本文件,如下图所示: TestVar 00000000 WWWWWW 222.222 222.222 222.222 UNKNOWN ,,,,,,,, ,,,,,, ,,,,,, 我想获得以下输出: 每个部分的长度始终为8个字符(例如TestVar,00000000) 从以testvar开头的每一行中,我希望代码返回: WWWWWW_00000000 有人能帮我吗?我以前用过regex,但从来没有用过python,我对这两种语言都很陌生 感谢使用regex模式^

我有一个由多个块组成的文本文件,如下图所示:

TestVar 00000000  WWWWWW 222.222 222.222 222.222
UNKNOWN ,,,,,,,,  ,,,,,,  ,,,,,,
我想获得以下输出: 每个部分的长度始终为8个字符(例如TestVar,00000000) 从以testvar开头的每一行中,我希望代码返回:

WWWWWW_00000000
有人能帮我吗?我以前用过regex,但从来没有用过python,我对这两种语言都很陌生


感谢使用regex模式
^TestVar\s+(\d{8})\s+(\s+)

您可以通过>>

import re
p = re.compile('^TestVar\s+(\d{8})\s+(\S+)')
m = p.match('TestVar 00000000  WWWWWW 222.222 222.222 222.222')
if m:
    print 'Match found: ', m.group(2) + '_' + m.group(1)
else:
    print 'No match'
测试这个演示


要查找多行
input
string中的所有匹配项,请使用:

p = re.compile("^TestVar\s+(\d{8})\s+(\S+)", re.MULTILINE) 
m = p.findall(input) 


要了解有关使用Python的正则表达式的更多信息,请参见使用正则表达式模式的
^TestVar\s+(\d{8})\s+(\s+)
您可以通过>>

import re
p = re.compile('^TestVar\s+(\d{8})\s+(\S+)')
m = p.match('TestVar 00000000  WWWWWW 222.222 222.222 222.222')
if m:
    print 'Match found: ', m.group(2) + '_' + m.group(1)
else:
    print 'No match'
测试这个演示


要查找多行
input
string中的所有匹配项,请使用:

p = re.compile("^TestVar\s+(\d{8})\s+(\S+)", re.MULTILINE) 
m = p.findall(input) 


要了解有关使用Python的正则表达式的更多信息,请参见假设您不希望我们为您编写代码 这里有一个非常具体的链接

请记住,您可能希望使用findall()。。。 也可以使用r'编写代码,而不需要经常使用反斜杠

您可能希望向我们展示您已经编写但尚未运行的代码,以便我们能够更好地帮助您
gl

假设您不希望我们为您编写代码 这里有一个非常具体的链接

请记住,您可能希望使用findall()。。。 也可以使用r'编写代码,而不需要经常使用反斜杠

您可能希望向我们展示您已经编写但尚未运行的代码,以便我们能够更好地帮助您 不带regexp的总账:

lines = ["TestVar 00000000  WWWWWW 222.222 222.222 222.222",
         "UNKNOWN ,,,,,,,,  ,,,,,,  ,,,,,,"]
print [toks[2].strip(' ')+'_'+toks[1] for toks in \
        [[line[i:i+8] for i in xrange(0,len(line),8)] for line in lines] \
       if toks[0] == 'TestVar ']
没有regexp:

lines = ["TestVar 00000000  WWWWWW 222.222 222.222 222.222",
         "UNKNOWN ,,,,,,,,  ,,,,,,  ,,,,,,"]
print [toks[2].strip(' ')+'_'+toks[1] for toks in \
        [[line[i:i+8] for i in xrange(0,len(line),8)] for line in lines] \
       if toks[0] == 'TestVar ']

您提到了该模式的多次出现,在这种情况下,您可以使用:


您提到了该模式的多次出现,在这种情况下,您可以使用:


你真的需要regexp吗?你能把每一行分开,取第二和第三个元素吗?@PierreGM-Regex在这里很容易使用,因为OP还需要检查字符串是否以TestVar开头,这样就可以一步完成……你真的需要regexp吗?你能把每一行分开,取第二和第三个元素吗?@PierreGM-Regex在这里很容易使用,因为OP还需要检查字符串是否以TestVar开头,这样就可以一步完成……首先非常感谢你。有人能解释一下如何在python代码中使用正则表达式来检查字符串吗?首先非常感谢。有人能解释一下如何在python代码中使用正则表达式来检查字符串吗?