重新格式化userinpu

2024-05-14 18:18:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个程序,它可以将用户输入的字符串重新格式化为更可接受的字符串。你知道吗

字符串的格式应为:

a list of authors (year) title, other information

例如,如果用户输入:

"suleman, h (2001) Some Random Piece Of Junk, Journal of Junk, ACM, pp1-100, 2000"

我的程序应该返回:

"Suleman, H (2001) Some random piece of junk, Journal of Junk, ACM, pp1-100, 2000."

Tags: of字符串用户程序title格式someyear
1条回答
网友
1楼 · 发布于 2024-05-14 18:18:55

以下是一个基于输入字符串结构的有效解决方案:

str="suleman, h (2001) Some Random Piece Of Junk, Journal of Junk, ACM, pp1-100, 2000"

parts=str.split(',')
newparts=[]

for chunk in parts[:-3]:
    newparts.append(chunk.title())

newparts.append(parts[3].upper())

for chunk in parts[4:]:
    newparts.append(chunk.lower())


newstr=",".join(newparts)

print newstr

运行结果:

11:41 ~ $ python test.py
Suleman, H (2001) Some Random Piece Of Junk, Journal Of Junk, ACM, pp1-100, 2000

我原本以为.title()会为您提供所需的大小写,但您有需要完全大写的术语,如ACM,以及需要完全小写的部分,如“pp1-100”。所以我采取了更结构化的方法。注意,这不适用于复合引用。我怀疑必须有一个特定的python库来处理引用的适当大小写。但是,由于规则可能很复杂,而且插入并不总是干净的,因此无法保证正确的处理。你知道吗

上面我详细介绍的方法假设最后三个逗号分隔的术语是特例,但前面的所有内容都遵循TitleCase规则。你知道吗

建议:

对输入字段进行防御性编码,以便以某种方式将要大写的信息分组在一起。即,TitleCase字段、所有CAPS字段、所有LOWER字段和left-AS-IS字段。你知道吗

然后在代码中进行相应的处理。你知道吗

相关问题 更多 >

    热门问题