我需要对文本文件中的每一行执行此操作,然后将其写入另一个文件。我需要删除第一个空格并用逗号替换它(,
)。用逗号替换每行中的第一个空格
但是,我不希望这发生在线上的任何其他空白。下面是从输入文本文件中的一个片段:
Achilles Patroclus
Achilles Triumph of Achilles in Corfu Achilleion
Achilles Antilochus
Achilles Hephaestus
Achilles Shield of Achilles
我需要对文本文件中的每一行执行此操作,然后将其写入另一个文件。我需要删除第一个空格并用逗号替换它(,
)。用逗号替换每行中的第一个空格
但是,我不希望这发生在线上的任何其他空白。下面是从输入文本文件中的一个片段:
Achilles Patroclus
Achilles Triumph of Achilles in Corfu Achilleion
Achilles Antilochus
Achilles Hephaestus
Achilles Shield of Achilles
你可以做这样的事情:
[",".join(line.split(" ", 1)) for line in lines]
这指出我在正确的方向!这里是我的解决方案.. 与开放(f_in,'r')作为fin: 与开放(f_out,'w')作为fout: 为fin: fout.write(“,”。join line.split(“”,1))) – lsch91
嘛我不是一个Python程序员,但我会尝试有助于从正则表达式的单点解决方案看法。
你正在做的是确定第一个字和空白之后它。遵循正则表达式来完成这项工作。
正则表达式:使用(^\b\w*\b)(\s)
标志:
g
全局搜索。
m
用于多行搜索。
说明:
(^\b\w*\b)
将捕获行的第一个字。
(\s)
将在第一个单词之后捕获空白。您也可以选择使用?:
以内的非捕获组,因此它变成(?:\s)
或者根本不捕获它。
更换做到:
\1,
更换匹配的内容。这将会把捕获的第一组,因为它是和,
代替whitespace
使用字符串方法replace(old, new, [count])
的。如果给出可选的参数计数,则仅替换第一个计数事件。
with open("file-path") as fin, open("new_file_path", "w") as fout:
for line in fin:
fout.write(line.replace(' ', ',', 1)
使用re.sub
与^([^\s]*)\s+
:
>>> s
'Achilles Triumph of Achilles in Corfu Achilleion'
>>> re.sub(r'^([^\s]*)\s+', r'\1, ', s)
'Achilles, Triumph of Achilles in Corfu Achilleion'
那么存在re.sub
第四个参数,它可以像
re.sub(" ", ",", x, cnt=1)
x
使用的是字符串,cnt
表示多少更换你想要
太好了。你已经尝试了什么? – idjaw
你的意思是说,在第一个单词“Achilles”之后放置','? – 2016-03-06 06:09:31