1

以下是我的数据:

Data Here 94/452O
Data more 94/4522i
Data bla 94/111
Data bla 94/459es
Data bla 94/444

items由以前的一些代码自动生成,但它可能会像这样出现:
items = ["Data Here 94/452O", "Data more 94/4522i", "Data bla 94/111", "Data bla 94/459es", "Data bla 94/444"]

现在我正在附加以下内容:

"\n".join(items).replace("4ke", "9")与其他一些 .replaces 但是我希望它用大写字母而不是小写字母替换/更改数字末尾的字符...

输出:

Data Here 94/452O
Data more 94/4522I
Data bla 94/111
Data bla 94/459ES
Data bla 94/444
4

5 回答 5

4
items = ["Data Here 94/452O", "Data more 94/4522i", "Data bla 94/111", "Data bla 94/459es", "Data bla 94/444"]

items = [item[:-2] + item[-2:].upper() for item in items]

print items

输出

['Data Here 94/452O', 'Data more 94/4522I', 'Data bla 94/111', 'Data bla 94/459ES', 'Data bla 94/444']
于 2013-10-29T03:48:23.703 回答
4

使用regex

>>> import re
>>> items = ["Data Here 94/452O", "Data more 94/4522i", "Data bla 94/111", "Data bla 94/459es", "Data bla 94/444"]
>>> for item in items:
...     print re.sub(r'([a-z]+)$', lambda m:m.group(1).upper(), item)
...     
Data Here 94/452O
Data more 94/4522I
Data bla 94/111
Data bla 94/459ES
Data bla 94/444
于 2013-10-29T03:48:25.020 回答
2

使用切片表示法str.upper

>>> item = "Data bla 94/459es"
>>> item[:-2]
'Data bla 94/459'
>>> item[-2:]
'es'
>>> item[-2:].upper()
'ES'
>>> item[:-2] + item[-2:].upper()
'Data bla 94/459ES'

>>> items = ["Data Here 94/452O", "Data more 94/4522i", "Data bla 94/111", "Data bla 94/459es", "Data bla 94/444"]
>>> [item[:-2] + item[-2:].upper() for item in items]
['Data Here 94/452O', 'Data more 94/4522I', 'Data bla 94/111', 'Data bla 94/459ES', 'Data bla 94/444']
于 2013-10-29T03:48:07.570 回答
2

试试这个,在每一行。这是最简单的答案,使用切片:

line = line[:-2] + line[-2:].upper()

以上假设最后最多出现两个字母;请注意,它upper()不会对数字产生任何影响,因此使用它是非常安全的。例如:

line = 'Data bla 94/111'
line[:-2] + line[-2:].upper()
=> 'Data bla 94/111'

line = 'Data bla 94/459es'
line[:-2] + line[-2:].upper()
=> 'Data bla 94/459ES'
于 2013-10-29T03:48:59.163 回答
2

没有正则表达式的解决方案:

print "\n".join(["%s %s" % (" ".join(x.split()[0:-1]), x.split()[-1].upper()) for x in items])

输出:

Data Here 94/452O
Data more 94/4522I
Data bla 94/111
Data bla 94/459ES
Data bla 94/444
于 2013-10-29T04:01:00.850 回答