用逗号

时间:2016-03-06 05:37:44

标签: python regex

我需要对文本文件中的每一行执行此操作,然后将其写入另一个文件。我需要删除第一个空格并将其替换为逗号(,)。

但是,我不希望这发生在线路上的任何其他空白区域。以下是输入文本文件的片段:

Achilles Patroclus
Achilles Triumph of Achilles in Corfu Achilleion
Achilles Antilochus
Achilles Hephaestus
Achilles Shield of Achilles

5 个答案:

答案 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表示您想要的替换次数