无法处理此正则表达式

Ste*_*gle 0 python regex

我有以下"greekSymbols.txt"

? ? alpha
? ? beta
? ? gamma
? ? delta
? ? epsilon
? ? zeta
? ? eta
? ? theta
? ? iota
? ? kappa
? ? lambda
? ? mu  
? ? nu
? ? xi
? ? omicron
? ? pi
? ? rho
? ? sigma
? ? tau
? ? upsilon
? ? phi
? ? chi
? ? psi
? ? omega
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为Anki纯文本文件,并使用制表符作为分隔符.我将每行转换成两张牌,前面是符号(大写或小写),后面是名称.我有以下内容.

#!/usr/local/bin/python

import re

pattern = re.compile(r"(.)\s+(.)\s+(.+)", re.UNICODE)

input = open("./greekSymbols.txt", "r")

output = open("./greekSymbolsFormated.txt", "w+")

line = input.readline()

while line:

    string = line.rstrip()

    m = pattern.match(string)

    if m:
        output.write(m.group(1) + "\t" + m.group(3) + "\n")
        output.write(m.group(2) + "\t" + m.group(3) + "\n")
    else:
        print("I was unable to process line '" + string + "' [" +  str(m) + "]")

    line = input.readline()

input.close();
output.close();
Run Code Online (Sandbox Code Playgroud)

不幸的是,我目前正在获取每行的"我无法处理..."消息,其中str(m)的值为None.我究竟做错了什么?

> localhost:Anki stephen$ python ./convertGreekSymbols.py 
I was unable to process line '? ?   alpha' [None]
I was unable to process line '? ?   beta' [None]
...
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 5

你真的不需要正则表达式:

with (open("./greekSymbols.txt") as infile, 
      open("./greekSymbolsFormated.txt", "w+") as outfile):
    for line in infile:
        up, low, name = line.split()
        outfile.write("{0}\t{1}".format(up,name))
        outfile.write("{0}\t{1}".format(low,name))
Run Code Online (Sandbox Code Playgroud)

如果你想坚持使用正则表达式,请尝试以下正则表达式而不是你的正则表达式(这应该适用于IMO,但可能不够明确):

pattern = re.compile(r"(\S+)\s+(\S+)\s+(.+)", re.UNICODE)
Run Code Online (Sandbox Code Playgroud)