【问题标题】:Abbreviate words in a string to comply with max length [closed]缩写字符串中的单词以符合最大长度[关闭]
【发布时间】:2018-07-07 17:07:36
【问题描述】:

我有一个字符串向量(包含多个单词的短语)。 由于超出此问题范围的原因,我需要遵守每个字符串 N 个字符的长度限制。

我想到的第一件事就是拼接每个字符串,但不幸的是,操作的结果将面向最终用户(最终用户必须阅读截断的字符串并从中理解)。

这意味着我不能只对字符串进行切片,因为如果我这样做了:

This is a simple test with FOO
This is a simple test with BAR

将转换为

This is a simple te...
This is a simple te...

意味着数据将丢失,用户将无法区分这两个字符串。

再想一想后,我发现最好的解决方案是尽可能少地缩写尽可能少的字符,始终遵守最大长度限制。

有了这样的行为,前面的例子将被转换为

This is a sim. te. with FOO
This is a sim. te. with BAR

我想在编码之前我会在这里询问替代/更好的解决方案。 另外,如果没有更好的选择,在实施时我应该记住什么?你能给我一些建议吗?

【问题讨论】:

    标签: python string data-manipulation


    【解决方案1】:

    我有一些想法......可能会也可能不会满足您的需求。首先,这里有一些额外的forms of abbreviation,您可能能够以编程方式实现。

    删除元音

    如果您删除元音,您可能能够在所需长度范围内缩写单词,并且更易读。去除元音是acceptable form的缩写。请记住,即使它们是元音,您也需要保留单词的第一个和最后一个字母。组织 = orgnztn

    使用缩写 API

    https://Abbreviations.com 有一个带有缩写的 API。这对于缩写较长的单词可能很有用。例如,要查找“组织”的缩写:https://www.abbreviations.com/abbreviation/organization 缩写为 ORG

    这个用户在 python 中似乎有attempted to do this。如果你知道你会有频繁的短语,你可以创建一个缩写形式的字典。

    【讨论】:

      【解决方案2】:

      不幸的是,无论您在何处截断数据,最终用户都可能会看到两个字符串相同。您可以进行一些字符串比较以确定差异在哪里,然后编写一些逻辑来截断其他位置的字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-04
        • 2020-08-22
        • 1970-01-01
        • 2020-10-12
        • 2016-09-06
        • 2020-01-31
        • 1970-01-01
        • 2022-01-01
        相关资源
        最近更新 更多