python 태그에서 단어와 숫자 나누기 (Split words and numbers from tags python)


문제 설명

python 태그에서 단어와 숫자 나누기 (Split words and numbers from tags python)

나는 "Am/VI/NN good/Adj 충분히/Prep for/Prep 1/2/NUM"이라는 문장을 가지고 있으며 단어와 태그로 분할하고 단어와 태그에 대한 두 개의 다른 사전을 만들어야 합니다. 여기에서 스레드를 보았지만 이것을 1/2/NUM로 나누는 것에 대한 단어가 없었습니다.

그래서 다음과 같이 해야 한다고 생각합니다.

s = "Am/V I/NN good/Prep enough/Prep for/Prep 1/2/NUM"
sent = s.split()
for word in sent:
    word = word.split('/[a‑z]')
dict_of_words = list(words[0])
doct_of_tags = list(words[1])

하지만 그러면 다음과 같이 표시됩니다.

['Am/'V]
['I/NN']
[good/Prep]
etc.

이 문제를 어떻게 해결합니까?


참조 솔루션

방법 1:

split on the spaces first:

s = "Am/V I/NN good/Prep enough/Prep for/Prep 1/2/NUM"
sent = s.split()

Then for each item rsplit on the / character:

for item in sent:
    data = item.rsplit('/', 1)
    word = data[0]
    tag = data[1]

Or if you prefer more concise code:

for item in sent:
    word, tag = item.rsplit('/', 1)

방법 2:

As noted in the comments on shuttle87's answer, here is a simple example showing split with regex in case you need to split on multiple characters, which you can't do with the string split method.

import re

s = "Am/V I/NN good/Prep enough/Prep for/Prep 1/2/NUM"

parts = s.split(" ")
words_tags = [re.split(r'/(?=[A‑Za‑z])', part) for part in parts]

words = []
tags = []
for word_tag in words_tags:
    words.append(word_tag[0])
    tags.append(word_tag[1])

['Am', 'I', 'good', 'enough', 'for', '1/2'] ['V', 'NN', 'Prep', 'Prep', 'Prep', 'NUM']

Regex demo here.

(by Repzzshuttle87binarysubstrate)

참조 문서

  1. Split words and numbers from tags python (CC BY‑SA 2.5/3.0/4.0)

#split #Python






관련 질문

오류: 이 범위에서 '분할'이 선언되지 않았습니다. (error: ‘split’ was not declared in this scope)

화살표 문자가 포함된 문자열 분할 (Split a string containing arrow characters)

문자 수로 문자열의 특정 부분 가져오기 (Take specific part of a string by character count)

VBScript: 새로운 분할 항목이 있는 리조트 문자열 및 그룹 (VBScript: Resort String and group with new Split Item)

python 태그에서 단어와 숫자 나누기 (Split words and numbers from tags python)

구두점을 문자열 끝에서 시작 부분으로 이동하려면 어떻게 해야 합니까? (How can I move the punctuation from the end of a string to the beginning?)

쉼표로 문자열을 분할하지만 대괄호 또는 따옴표로 묶인 쉼표는 무시하십시오. (Split string by comma but ignore commas in brackets or in quotes)

숫자를 나누고 점 뒤에 하나의 숫자를 유지하십시오. (Split the number and keep one number after the dot)

Oracle에서 쉼표로 구분된 문자열의 최대 개수를 얻는 방법은 무엇입니까? (How to get maximum COUNT of comma separated string in Oracle?)

분할 방법을 사용하여 텍스트 파일에서 범주를 열로 분리 (Using the split method to separate categories into columns from a text file)

Powershell에서 문자열 분할 및 추가 (Splitting and Adding String in Powershell)

원래 문자열 포인터를 수정하지 않는 strtok_r() 및 strsep()에 대한 C-문자열 대안? (C-string alternatives to strtok_r() and strsep() that don't modify the original string pointer?)







코멘트