【问题标题】:python finditer functionality in r language?r语言中的python finditer功能?
【发布时间】:2018-05-24 04:37:13
【问题描述】:

我是 python 程序员,我想在 r 中使用正则表达式,但我想要finditer 在 r 语言中的功能,而不是 findall,我想使用每个值:

所以如果我有一个包含以下内容的文件:

<LayerDepth Units="mm" Count="4" value1="141" value2="241" value3="1104" value4="1492" value444="898" LastModified="6/11/2012"

现在如果我使用这段代码:

import re
pattern='(value\d.+?)"(\d.+?)"'
with open("file1.txt",'r') as f:
    match=re.finditer(pattern,f.read())
    for i in match:
        print(i.group())

输出将是:

value1="141"
value2="241"
value3="1104"
value4="1492"
value444="898"

我想在 r 中实现相同的功能,我该如何实现?

【问题讨论】:

    标签: python r regex python-3.x


    【解决方案1】:

    我们可以通过以下模式使用gregexpr

    (value\d+="\d+")
    

    然后,使用regmatchesgregexpr 的输出从输入字符串中获取实际匹配项。

    x <- c("<LayerDepth Units=\"mm\" Count=\"4\" value1=\"141\" value2=\"241\" value3=\"1104\" value4=\"1492\" value444=\"898\" LastModified=\"6/11/2012\" Now")
    m <- gregexpr("(value\\d+=\"\\d+\")", x)
    regmatches(x, m)
    [[1]]
    [1] "value1=\"141\""   "value2=\"241\""   "value3=\"1104\""  "value4=\"1492\"" 
    [5] "value444=\"898\""
    

    Demo

    【讨论】:

    • 但为此我必须更改我的正则表达式?我在 python 中有一个使用三种模式的大代码,
    • @toy_sta 我通过演示给了你一个可行的答案。如果你想坚持使用你的 Python 脚本,那也很好。
    • 实际上这个答案中的代码确实适用于问题中的模式:regmatches(x, gregexpr('(value\\d.+?)"(\\d.+?)"', x))
    猜你喜欢
    • 2018-12-03
    • 2015-09-23
    • 1970-01-01
    • 2019-09-11
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    相关资源
    最近更新 更多