Python 仅保留字符串中的指定内容
我在文件中有以下格式的数据:Python 仅保留字符串中的指定内容,python,regex,python-2.7,Python,Regex,Python 2.7,我在文件中有以下格式的数据: <string1> abc:string2 <http://yago-knowledge.org/resource/wikicategory_Sports_clubs_established</text\u003e\n______<sha1\u003eqwjfowt5my8t6yuszdb88k2ehskjuh0</sha1\u003e\n____</revision\u003e\n__</page\u00
<string1> abc:string2 <http://yago-knowledge.org/resource/wikicategory_Sports_clubs_established</text\u003e\n______<sha1\u003eqwjfowt5my8t6yuszdb88k2ehskjuh0</sha1\u003e\n____</revision\u003e\n__</page\u003e\n__<page\u003e\n____<title\u003ePortal:Tropical_cyclones/Anniversaries/August_22</title\u003e\n____<ns\u003e100</ns\u003e\n____<id\u003e7957689</id\u003e\n____<revision\u003e\n______<id\u003e446349886</id\u003e\n______<timestamp\u003e2011-08-23T17:38:19Z</timestamp\u003e\n______<contributor\u003e\n________<username\u003eLightbot</username\u003e\n________<id\u003e7178666</id\u003e\n______</contributor\u003e\n______<comment\u003eDelink_non-obscure_units._Conversions._Report_bugs_to_[[User_talk:Lightmouse>.
有什么方法可以实现这一点吗?您可能只需要使用UNIX工具和一些疯狂的正则表达式就可以实现这一点,但我会为此编写一个小型Python脚本:
- 使用
Open()
- 逐行迭代输入文件:
对于输入文件中的行:
- 在制表符处拆分行:
用于行中的零件。拆分('\t'):
- 检查零件是否包含在
中:如果零件.startswith(“”):
- 使用正则表达式筛选字符:
filtered_part=re.sub(r'[^a-zA-Z0-9/:.]','',part)
- 将过滤的部分重新连接在一起:
filtered\u line='\t'。连接(过滤的部分)
- 将筛选行写入输出文件:
output\u file.Write(筛选行+'\n')
按照这个大纲,编写一个工作脚本应该很容易。在您的问题中最好使用sed或python,因为这两种工具的应用领域非常不同。或者你的意思是“从命令行”,在Linux一行程序中?在这种情况下,为什么不用perl呢?我已经从问题中删除了“sed”。我的意思是说在python或linux中是否有某种方法可以实现同样的效果。即使不是一行,我也不在乎。如果在中使用否定的括号表达式,“sed”替换不起作用吗?我不知道。你能举例说明在最后一个
之间需要的唯一修改是什么吗?即,在第二个选项卡之后?
<string1> abc:string2 <http://yago-knowledge.org/resource/wikicategory_Sports_clubs_established_text_u003e_n_______sha1_u003eqwjfowt5my8t6yuszdb88k2ehskjuh0_sha1_u003e_n_____revision_u003e_n___/page_u003e_n___page_u003e_n_____title_u003ePortal:Tropical_cyclones/Anniversaries/August_22_/title_u003e_n_____ns_u003e100_/ns_u003e_n_____id_u003e7957689_/id_u003e_n_____revision_u003e_n_______id_u003e446349886_/id_u003e_n_______timestamp_u003e2011-08-23T17:38:19Z_/timestamp_u003e_n_______contributor_u003e_n_________username_u003eLightbot_/username_u003e_n_________id_u003e7178666_/id_u003e_n_______/contributor_u003e_n_______comment_u003eDelink_non-obscure_units._Conversions._Report_bugs_to___User_talk:Lightmouse>.