如何分解字符串

2019-09-03 11:30:19 +08:00
 songdg
像' [生物质能] [新疆振兴] [页岩气] ' 如何分解成列表 ['生物质能', '新疆振兴', '页岩气'] 形式。
2156 次点击
所在节点    Python
13 条回复
ipwx
2019-09-03 11:45:53 +08:00
re.findall(r'\[([^\]]+)\]', s)
qqq8724
2019-09-03 11:48:28 +08:00
先替换 ][ 为 ','
替换 [ 为 ['
再替换 ] 为 ']
SuperMild
2019-09-03 12:04:08 +08:00
我试了一下

' [生物质能] [新疆振兴] [生物质能] [新疆振兴] [页岩气] [页岩气] '.split('] [')

结果是 [' [生物质能', '新疆振兴', '生物质能', '新疆振兴', '页岩气', '页岩气] ']

你再对头尾的项目简单处理一下就行了。这个如果懂正则,用正则做最好,如果不懂正则,用我这个方法的好处是容易理解。
princelai
2019-09-03 12:19:35 +08:00
import re
s = ' [生物质能] [新疆振兴] [页岩气] '
re.findall("\[(.*?)\]",s)
skyrem
2019-09-03 13:00:39 +08:00
numpy.flatten
Dustyposa
2019-09-03 13:35:58 +08:00
import re
s = ' [生物质能] [新疆振兴] [页岩气] '
re.findall("\w+",s)
dongxiao
2019-09-03 13:52:57 +08:00
s.replace("]", "").replace("[", "").strip().split()
Out[126]: ['生物质能', '新疆振兴', '页岩气']

s
Out[127]: ' [生物质能] [新疆振兴] [页岩气] '
imdong
2019-09-03 14:21:41 +08:00
' [生物质能] [新疆振兴] [页岩气] '.trim(' []').split('] [')

(function (match_string) {
let result = match_string.match(/\[([^\]]+)\]/g);
result.forEach(function (item, index) {
result[index] = /\[([^\]]+)\]/.exec(item)[1]
});
return result;
})(' [生物质能] [新疆振兴] [页岩气] ')
snoopygao
2019-09-03 16:55:42 +08:00
' [生物质能] [新疆振兴] [页岩气] '.lstrip("'[").rstrip("]'").split('][')
MMMMMMMMMMMMMMMM
2019-09-04 01:46:14 +08:00
[\u4E00-\u9FA5]*
songdg
2019-09-04 10:27:15 +08:00
@Dustyposa 这个办法好能应付多种情况,但有个问题,如果出现 [工业 4.0]就不能正确分解。
songdg
2019-09-04 10:28:59 +08:00
@snoopygao 我也是这种思路。
ydeveloper
2019-09-04 17:25:49 +08:00
可以用正则式判断最近的"["和"]"之间的内容,拆分后然后再字符串,我不太懂 Python 的写法,不过正则的写法如下:
(?<=\[).*?(?=\])
不过这种情况不能判断出[123]]这种类型

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597451

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX