用于捕获韩文字母的正则表达式
RegEx for capturing Korean alphabets
我的数据框名称如下:
'가락시장(340)',
'가락시장(8)',
'가산디지털단지(7)',
'강남(222)',
'강남구청',
'강동',
'강동구청',
'강변(214)',
'개롱',
'개화산',
'거여',
'건대입구(212)',
'건대입구(7)',
'경복궁(317)',
'경찰병원(341)',
'고덕',
'고려대',
'고속터미널(329)',
'고속터미널(7)',
'공덕(5)',
'공덕(6)',
'공릉',
'광나루',
...
所有列表都在这个link
期望的输出:
가락시장
가산디지털단지
강남
강남구청
강동
강동구청
강변
개롱
개화산
거여
건대입구
경복궁
경찰병원
고덕
고려대
고속터미널
공덕
공릉
광나루
尝试
import re
for i in df['name']:
i = re.match('^[가-힣]*$', i) # '^[가-힣]&$ is extract Hangeul (Korean alphabet)
但是df['name']
没有改变。
如何解决这个问题?
我们也许可以用一个简单的表达式来捕捉你想要的输出,只用一个'
作为左边界,然后收集字母,类似于:
'([\p{L}]+)
测试
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"'([\p{L}]+)"
test_str = ("'가락시장(340)',\n"
" '가락시장(8)',\n"
" '가산디지털단지(7)',\n"
" '강남(222)',\n"
" '강남구청',\n"
" '강동',\n"
" '강동구청',\n"
" '강변(214)',\n"
" '개롱',\n"
" '개화산',\n"
" '거여',\n"
" '건대입구(212)',\n"
" '건대입구(7)',\n"
" '경복궁(317)',\n"
" '경찰병원(341)',\n"
" '고덕',\n"
" '고려대',\n"
" '고속터미널(329)',\n"
" '고속터미널(7)',\n"
" '공덕(5)',\n"
" '공덕(6)',\n"
" '공릉',\n"
" '광나루',")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
正则表达式
如果不需要此表达式,可以在 regex101.com 中对其进行修改或更改。
正则表达式电路
jex.im 可视化正则表达式:
参考
How to implement \p{L} in python regex
您可以使用以下代码删除括号和括号内的字符:
import re
pattern = re.compile(r'\(\w*\)')
for text in YOUR_DATA_LIST :
only_station_name = re.sub(pattern, '', text)
print(only_station_name)
我的数据框名称如下:
'가락시장(340)',
'가락시장(8)',
'가산디지털단지(7)',
'강남(222)',
'강남구청',
'강동',
'강동구청',
'강변(214)',
'개롱',
'개화산',
'거여',
'건대입구(212)',
'건대입구(7)',
'경복궁(317)',
'경찰병원(341)',
'고덕',
'고려대',
'고속터미널(329)',
'고속터미널(7)',
'공덕(5)',
'공덕(6)',
'공릉',
'광나루',
...
所有列表都在这个link
期望的输出:
가락시장
가산디지털단지
강남
강남구청
강동
강동구청
강변
개롱
개화산
거여
건대입구
경복궁
경찰병원
고덕
고려대
고속터미널
공덕
공릉
광나루
尝试
import re
for i in df['name']:
i = re.match('^[가-힣]*$', i) # '^[가-힣]&$ is extract Hangeul (Korean alphabet)
但是df['name']
没有改变。
如何解决这个问题?
我们也许可以用一个简单的表达式来捕捉你想要的输出,只用一个'
作为左边界,然后收集字母,类似于:
'([\p{L}]+)
测试
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"'([\p{L}]+)"
test_str = ("'가락시장(340)',\n"
" '가락시장(8)',\n"
" '가산디지털단지(7)',\n"
" '강남(222)',\n"
" '강남구청',\n"
" '강동',\n"
" '강동구청',\n"
" '강변(214)',\n"
" '개롱',\n"
" '개화산',\n"
" '거여',\n"
" '건대입구(212)',\n"
" '건대입구(7)',\n"
" '경복궁(317)',\n"
" '경찰병원(341)',\n"
" '고덕',\n"
" '고려대',\n"
" '고속터미널(329)',\n"
" '고속터미널(7)',\n"
" '공덕(5)',\n"
" '공덕(6)',\n"
" '공릉',\n"
" '광나루',")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
正则表达式
如果不需要此表达式,可以在 regex101.com 中对其进行修改或更改。
正则表达式电路
jex.im 可视化正则表达式:
参考
How to implement \p{L} in python regex
您可以使用以下代码删除括号和括号内的字符:
import re
pattern = re.compile(r'\(\w*\)')
for text in YOUR_DATA_LIST :
only_station_name = re.sub(pattern, '', text)
print(only_station_name)