我需要对文本文件中的每一行执行此操作,然后将其写入另一个文件。我需要删除第一个空格并将其替换为逗号(,
)。
但是,我不希望这发生在线路上的任何其他空白区域。以下是输入文本文件的片段:
Achilles Patroclus
Achilles Triumph of Achilles in Corfu Achilleion
Achilles Antilochus
Achilles Hephaestus
Achilles Shield of Achilles
答案 0 :(得分:6)
您可以这样做:
[",".join(line.split(" ", 1)) for line in lines]
答案 1 :(得分:2)
好吧,我不是python程序员,但我会尝试从正则表达式的角度为解决方案做出贡献。
您要做的是识别第一个单词,然后空白。正则表达式完成了这项工作。
正则表达式: (^\b\w*\b)(\s)
使用的标志:
g
进行全球搜索。
m
用于多行搜索。
<强>解释强>
(^\b\w*\b)
将捕获该行的第一个单词。
(\s)
将在第一个单词后捕获空格。您也可以在其中使用?:
来选择非捕获组,因此它会变为(?:\s)
或只是不捕获它。
替换为:
\1,
。这将使第一个捕获的组保持原样,,
而不是whitespace
的 Regex101 Demo 强>
答案 2 :(得分:2)
将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'
答案 3 :(得分:1)
使用字符串方法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)
答案 4 :(得分:1)
re.sub
中有第四个参数,可以像
re.sub(" ", ",", x, cnt=1)
x
是字符串,cnt
表示您想要的替换次数