分享
三行代码  ›  专栏  ›  技术社区  ›  pcrace97

在python中获取到标记之间的字符串

  •  0
  • pcrace97  · 技术社区  · 1 周前

    我有一个文本文件,我想得到两个标记之间的字符串。

    *rdfs:label "Henry Dunant"@de , "Henry Dunant"@en , "Henri Dunant"@fr ;*

    这是一段文字,我只想得到字符串 "Henry Dunant"@en 所以我找到了亨利·杜南

    所以 " "@en

    1 回复  |  直到 1 周前
        1
  •  0
  •   David Duran    1 周前

    如果只想得到一个单词,可以尝试以下代码:

    str_text = "rdfs:label         \"Henry Dunant\"@de , \"Henry Dunant\"@en , \"Henri Dunant\"@fr ;"
    splitted_text = str_text.split("\"")
    word = ""
    for ind, fragment in enumerate(splitted_text):
        if fragment[:3]=="@en":
            word=splitted_text[ind-1]
    print(word)
    

    结果:

    Henry Dunant
    
        2
  •  2
  •   Aryan Parekh    1 周前

    可以使用循环遍历元素

    创建另一个列表以保存新提取的元素。

    extracted= []
    for rawstring in list:
        for character in rawstring:
            if character == 'firstmarker':
                index1 = rawstring.index(character)
            elif character == 'secondmarker':
                index2 = rawstring.index(character) 
        extracted.append(rawstring[index1+1:index2])
    

    用你的两个记号笔代替“第一个记号笔”和“第二个记号笔”

        3
  •  0
  •   karsas    1 周前

    您可以使用下面的正则表达式获得所需的数据

    import re
    
    source = '*rdfs:label         "Henry Dunant"@de , "Henry Dunant"@en , "Henri Dunant"@fr ;*'
    match = re.search(r'"[\w ]+"@en', source).group()
    print(match)
    

    有关python中正则表达式的更多信息,请参阅 re documentation

        4
  •  0
  •   mo1ein    1 周前

    string = '*rdfs:label         \"Henry Dunant\"@de , \"Henry Dunant\"@en , \"Henri Dunant\"@fr ;*'
    res = string.split('\"')
    for i in range(len(res)) :
        if res[i] == '@en , ':
            print(res[i-1])