【问题标题】:Split user input and add character in Python string拆分用户输入并在 Python 字符串中添加字符
【发布时间】:2014-06-05 16:06:34
【问题描述】:

我有一个 Python 脚本,它接受用户输入(使用条形码进行扫描),随后会生成一个包含所有用户数据的 CSV 文件。然后使用此 CSV 文件来驱动 Crystal Report。

输入由一串由空格分隔的串联字段组成 - 项目编号、批次编号和数量。

    Example: G00177 LOT12345 24

然而,问题是 Item # OR Lot # 可能是数字而不是字符串:

    Example 1: G00177 12345 24
    Example 2: 00177 12345 24

我的想法是在Item#和Lot#的开头追加一个字符,强制变成一个字符串,然后使用Crystal自动抑制添加的字符。

到目前为止,我只能在 Item # 的开头添加一个字符 - 而不是 Lot #。我也不想追加到数量字段,因为它总是数字。

非常感谢任何批评、见解或建议。

我只是在学习 Python,我知道我的方法不是最好的。

感谢您的宝贵时间。

【问题讨论】:

  • 第一个代码块中的字符串格式与第二个不同。为什么一个是Example: 而另一个是Example #:
  • @HuuNguyen,这实际上不是代码的一部分,只是 OP 表示示例
  • 如果您需要将其转换为字符串然后传递它,您难道不能直接将其类型转换为 str() 吗?除非它在开头需要一个字母以便能够理解它想要什么。
  • Bob- 我将用户的数据转换为 str,然后拆分为“”。我的问题是 Crystal 试图通过自动将我的 Lot # 指定为字符串或数字字段来变得“智能”。我的目标是将一个字符附加到前 2 个分隔字段(Item / Lot #),同时将最后一个字段(Quantity)保留为数字。我为造成的混乱道歉

标签: python string csv crystal-reports


【解决方案1】:

你可以试试这样的:

report_one = '00177 12345 24'
report_two = 'G0177 12345 24'
report_three = 'G0177 I2345 24'

def convert(original):
    s = original.split()
    for i in range(2):       # 2 is used here because that's how many 'words'
        try:                 #     we want to check for numeric-ness. This can
            int(s[i])        #     be adjusted if you have to change your schema
        except ValueError:   #     at some point in the future.
            s[i] += 'S'
    return ' '.join(s)

print convert(report_one)    # Prints 00177 12345 24
print convert(report_two)    # Prints G0177S 12345 24
print convert(report_three)  # Prints G0177S I2345S 24

这首先将字符串拆分为单独的单词。您知道第一个和第二个可能是整数,您需要一种方法让下一个系统将它们理解为字符串。

使用拆分词,如果字符串不是整数,则将词转换为try 块下的int 将抛出ValueError。也就是说,如果它包含任何字母,except ValueError 子句将启动。此时,您可以简单地在末尾附加一个字母,并让您的下一个系统扫描该词以查找该结尾字母(这里我的示例使用'S')。

如果要在开头附加一个字母,可以将s[i] += 'S'替换为:s[i] = 'S' + s[i]

【讨论】:

  • 好主意,感谢您的快速回复!我会玩这个。您对简单地使用替换有什么想法?或者也许是rsplit? bt1Replace = bt1.replace(' ',' `') 我想知道是否有办法在前 2 个分隔符之后附加一个字符,但跳过第 3 个,因为 Quantity 始终是数字。再次,非常感谢任何想法或见解。再次感谢
  • 我明白你的担忧。我编辑了我的答案以澄清我的代码的作用。它已经解决了您关于不替换 Quantity 的观点。
  • 现在我明白了。如果我相应地调整它,这看起来会起作用!再次感谢胡!
  • 这就像一个魅力!非常感谢您的帮助。我希望有一天能够把它付清。
最近更新 更多